Chromium Code Reviews| 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, |