Skip to content

Commit 04ce7a8

Browse files
scheglovCommit Queue
authored andcommitted
Fine. Fix for MultiplyDefinedElement in AST node.
Change-Id: I9d20ce86c1c1d3f7b28a9b33774fddf7a4a51a63 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/444502 Reviewed-by: Johnni Winther <[email protected]> Commit-Queue: Konstantin Shcheglov <[email protected]>
1 parent 39ca9f5 commit 04ce7a8

File tree

3 files changed

+89
-1
lines changed

3 files changed

+89
-1
lines changed

pkg/analyzer/lib/src/fine/manifest_ast.dart

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ enum ManifestAstElementKind {
2323
formalParameter,
2424
importPrefix,
2525
typeParameter,
26-
regular;
26+
regular,
27+
multiplyDefined;
2728

2829
static final _bitCount = values.length.bitLength;
2930
static final _bitMask = (1 << _bitCount) - 1;
@@ -433,6 +434,9 @@ class _ElementCollector extends GeneralizingAstVisitor<void> {
433434
case DynamicElementImpl():
434435
kind = ManifestAstElementKind.dynamic_;
435436
rawIndex = 0;
437+
case MultiplyDefinedElementImpl():
438+
kind = ManifestAstElementKind.multiplyDefined;
439+
rawIndex = 0;
436440
case FormalParameterElementImpl():
437441
kind = ManifestAstElementKind.formalParameter;
438442
rawIndex = indexOfFormalParameter(element);

pkg/analyzer/test/src/dart/analysis/driver_test.dart

Lines changed: 82 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44456,6 +44456,88 @@ const b = 0;
4445644456
);
4445744457
}
4445844458

44459+
test_manifest_constInitializer_multiplyDefinedElement() async {
44460+
newFile('$testPackageLibPath/a.dart', r'''
44461+
const foo = 0;
44462+
''');
44463+
44464+
newFile('$testPackageLibPath/b.dart', r'''
44465+
const foo = 0;
44466+
''');
44467+
44468+
configuration.withElementManifests = true;
44469+
await _runLibraryManifestScenario(
44470+
initialCode: r'''
44471+
import 'a.dart';
44472+
import 'b.dart';
44473+
const x = foo;
44474+
''',
44475+
expectedInitialEvents: r'''
44476+
[operation] linkLibraryCycle SDK
44477+
[operation] linkLibraryCycle
44478+
package:test/a.dart
44479+
declaredGetters
44480+
foo: #M0
44481+
returnType: int @ dart:core
44482+
declaredVariables
44483+
foo: #M1
44484+
type: int @ dart:core
44485+
constInitializer
44486+
tokenBuffer: 0
44487+
tokenLengthList: [1]
44488+
[operation] linkLibraryCycle
44489+
package:test/b.dart
44490+
declaredGetters
44491+
foo: #M2
44492+
returnType: int @ dart:core
44493+
declaredVariables
44494+
foo: #M3
44495+
type: int @ dart:core
44496+
constInitializer
44497+
tokenBuffer: 0
44498+
tokenLengthList: [1]
44499+
[operation] linkLibraryCycle
44500+
package:test/test.dart
44501+
declaredGetters
44502+
x: #M4
44503+
returnType: InvalidType
44504+
declaredVariables
44505+
x: #M5
44506+
type: InvalidType
44507+
constInitializer
44508+
tokenBuffer: foo
44509+
tokenLengthList: [3]
44510+
elementIndexList
44511+
6 = multiplyDefined
44512+
''',
44513+
updatedCode: r'''
44514+
import 'a.dart';
44515+
import 'b.dart';
44516+
const x = foo;
44517+
class A {}
44518+
''',
44519+
expectedUpdatedEvents: r'''
44520+
[operation] linkLibraryCycle
44521+
package:test/test.dart
44522+
declaredClasses
44523+
A: #M6
44524+
supertype: Object @ dart:core
44525+
interface: #M7
44526+
declaredGetters
44527+
x: #M4
44528+
returnType: InvalidType
44529+
declaredVariables
44530+
x: #M5
44531+
type: InvalidType
44532+
constInitializer
44533+
tokenBuffer: foo
44534+
tokenLengthList: [3]
44535+
elementIndexList
44536+
6 = multiplyDefined
44537+
''',
44538+
);
44539+
}
44540+
4445944541
test_manifest_constInitializer_namedType() async {
4446044542
await _runLibraryManifestScenario(
4446144543
initialCode: r'''

pkg/analyzer/test/src/dart/analysis/result_printer.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1315,6 +1315,8 @@ class LibraryManifestPrinter {
13151315
sink.writelnWithIndent('$index = null');
13161316
case ManifestAstElementKind.dynamic_:
13171317
sink.writelnWithIndent('$index = dynamic');
1318+
case ManifestAstElementKind.multiplyDefined:
1319+
sink.writelnWithIndent('$index = multiplyDefined');
13181320
case ManifestAstElementKind.formalParameter:
13191321
sink.writelnWithIndent('$index = formalParameter $rawIndex');
13201322
case ManifestAstElementKind.importPrefix:

0 commit comments

Comments
 (0)