Index: pkg/analyzer/lib/src/fasta/ast_builder.dart |
diff --git a/pkg/analyzer/lib/src/fasta/ast_builder.dart b/pkg/analyzer/lib/src/fasta/ast_builder.dart |
index 0a3a9b05a7cec6304088911a6bbce171c1d686f2..96efce12a2138203b500fda7cba27febc9bbc66b 100644 |
--- a/pkg/analyzer/lib/src/fasta/ast_builder.dart |
+++ b/pkg/analyzer/lib/src/fasta/ast_builder.dart |
@@ -1548,15 +1548,31 @@ class AstBuilder extends ScopeListener { |
_Modifiers modifiers = pop(); |
List<Annotation> metadata = pop(); |
Comment comment = pop(); |
+ |
+ // Decompose the preliminary ConstructorName into the type name and |
+ // the actual constructor name. |
+ SimpleIdentifier returnType; |
+ analyzer.Token period; |
+ SimpleIdentifier name; |
+ Identifier typeName = constructorName.type.name; |
+ if (typeName is SimpleIdentifier) { |
+ returnType = typeName; |
+ } else if (typeName is PrefixedIdentifier) { |
+ returnType = typeName.prefix; |
+ period = typeName.period; |
+ name = |
+ ast.simpleIdentifier(typeName.identifier.token, isDeclaration: true); |
+ } |
+ |
push(ast.constructorDeclaration( |
comment, |
metadata, |
toAnalyzerToken(modifiers?.externalKeyword), |
toAnalyzerToken(modifiers?.finalConstOrVarKeyword), |
- toAnalyzerToken(factoryKeyword), |
- constructorName.type.name, |
- constructorName.period, |
- constructorName.name, |
+ factoryKeyword, |
Paul Berry
2017/04/06 20:36:51
Analyzer and Fasta token types have been partially
scheglov
2017/04/06 21:11:38
Done.
|
+ ast.simpleIdentifier(returnType.token), |
+ period, |
+ name, |
parameters, |
toAnalyzerToken(separator), |
null, |