Skip to content

Commit 2cac4ab

Browse files
scheglovCommit Queue
authored and
Commit Queue
committed
Don't add augmentations of class / mixin to export scope.
Change-Id: I4c75ea3347bbbeee4bed17f0530dd75b72aace2e Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/314940 Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Samuel Rawlins <[email protected]> Reviewed-by: Brian Wilkerson <[email protected]>
1 parent 688fdb0 commit 2cac4ab

File tree

2 files changed

+59
-10
lines changed

2 files changed

+59
-10
lines changed

pkg/analyzer/lib/src/summary2/element_builder.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,9 @@ class ElementBuilder extends ThrowingAstVisitor<void> {
108108
_linker.elementNodes[element] = node;
109109

110110
var reference = _enclosingContext.addClass(name, element);
111-
_libraryBuilder.declare(name, reference);
111+
if (!element.isAugmentation) {
112+
_libraryBuilder.declare(name, reference);
113+
}
112114

113115
var holder = _EnclosingContext(reference, element);
114116
_withEnclosing(holder, () {
@@ -896,7 +898,9 @@ class ElementBuilder extends ThrowingAstVisitor<void> {
896898
_linker.elementNodes[element] = node;
897899

898900
var reference = _enclosingContext.addMixin(name, element);
899-
_libraryBuilder.declare(name, reference);
901+
if (!element.isAugmentation) {
902+
_libraryBuilder.declare(name, reference);
903+
}
900904

901905
var holder = _EnclosingContext(reference, element);
902906
_withEnclosing(holder, () {

pkg/analyzer/test/src/summary/elements_test.dart

Lines changed: 53 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25692,33 +25692,38 @@ library
2569225692
test_exportScope_augmentation_class() async {
2569325693
newFile('$testPackageLibPath/a.dart', r'''
2569425694
library augment 'test.dart';
25695-
class A {}
25695+
augment class A {}
25696+
class B {}
2569625697
''');
2569725698
var library = await buildLibrary(r'''
2569825699
import augment 'a.dart';
25699-
class B {}
25700+
class A {}
2570025701
''');
2570125702
configuration.withExportScope = true;
2570225703
checkElementText(library, r'''
2570325704
library
2570425705
definingUnit
2570525706
classes
25706-
class B @31
25707+
class A @31
25708+
augmentation: self::@augmentation::package:test/a.dart::@class::A
2570725709
constructors
2570825710
synthetic @-1
25711+
augmented
2570925712
augmentationImports
2571025713
package:test/a.dart
2571125714
definingUnit
2571225715
classes
25713-
class A @35
25716+
augment class A @43
25717+
augmentationTarget: self::@class::A
25718+
class B @54
2571425719
constructors
2571525720
synthetic @-1
2571625721
exportedReferences
25717-
declared self::@augmentation::package:test/a.dart::@class::A
25718-
declared self::@class::B
25722+
declared self::@augmentation::package:test/a.dart::@class::B
25723+
declared self::@class::A
2571925724
exportNamespace
25720-
A: self::@augmentation::package:test/a.dart::@class::A
25721-
B: self::@class::B
25725+
A: self::@class::A
25726+
B: self::@augmentation::package:test/a.dart::@class::B
2572225727
''');
2572325728
}
2572425729

@@ -25861,6 +25866,46 @@ library
2586125866
''');
2586225867
}
2586325868

25869+
test_exportScope_augmentation_mixin() async {
25870+
newFile('$testPackageLibPath/a.dart', r'''
25871+
library augment 'test.dart';
25872+
augment mixin A {}
25873+
mixin B {}
25874+
''');
25875+
var library = await buildLibrary(r'''
25876+
import augment 'a.dart';
25877+
mixin A {}
25878+
''');
25879+
configuration.withExportScope = true;
25880+
checkElementText(library, r'''
25881+
library
25882+
definingUnit
25883+
mixins
25884+
mixin A @31
25885+
augmentation: self::@augmentation::package:test/a.dart::@mixin::A
25886+
superclassConstraints
25887+
Object
25888+
augmented
25889+
superclassConstraints
25890+
Object
25891+
augmentationImports
25892+
package:test/a.dart
25893+
definingUnit
25894+
mixins
25895+
augment mixin A @43
25896+
augmentationTarget: self::@mixin::A
25897+
mixin B @54
25898+
superclassConstraints
25899+
Object
25900+
exportedReferences
25901+
declared self::@augmentation::package:test/a.dart::@mixin::B
25902+
declared self::@mixin::A
25903+
exportNamespace
25904+
A: self::@mixin::A
25905+
B: self::@augmentation::package:test/a.dart::@mixin::B
25906+
''');
25907+
}
25908+
2586425909
test_exportScope_augmentation_nested_class() async {
2586525910
newFile('$testPackageLibPath/a.dart', r'''
2586625911
library augment 'test.dart';

0 commit comments

Comments
 (0)