diff --git a/tools/spec_parser/Dart.g b/tools/spec_parser/Dart.g index ad410ba7163..a200f7099c7 100644 --- a/tools/spec_parser/Dart.g +++ b/tools/spec_parser/Dart.g @@ -472,6 +472,7 @@ metadata metadatum : constructorDesignation arguments + | identifier | qualifiedName ; @@ -905,8 +906,7 @@ identifier ; qualifiedName - : typeIdentifier - | typeIdentifier '.' identifier + : typeIdentifier '.' identifier | typeIdentifier '.' typeIdentifier '.' identifier ; @@ -1253,7 +1253,8 @@ typedIdentifier ; constructorDesignation - : qualifiedName + : typeIdentifier + | qualifiedName | typeName typeArguments ('.' identifier)? ; diff --git a/tools/spec_parser/SpecParser.java b/tools/spec_parser/SpecParser.java index cc9d1ea6a13..dc2c6e8bf79 100644 --- a/tools/spec_parser/SpecParser.java +++ b/tools/spec_parser/SpecParser.java @@ -101,8 +101,8 @@ public class SpecParser { } } - /// From [arguments], obey the flags ("--") if known and ignore - /// them if unknown; treat the remaining [arguments] as file paths and + /// From [arguments], obey the flags ("--", "-") if known and + /// ignore them if unknown; treat the remaining [arguments] as file paths and /// parse each of them. Return a [ParsingResult] specifying how many files /// were parsed, and how many of them failed to parse. private static ParsingResult parseFiles(String[] arguments) @@ -113,13 +113,13 @@ public class SpecParser { result.numberOfFileArguments = arguments.length; for (int i = 0; i < arguments.length; i++) { String filePath = arguments[i]; - if (filePath.substring(0, 2).equals("--")) { - result.numberOfFileArguments--; - if (result.numberOfFileArguments == 0) return result; - if (filePath.equals("--verbose")) verbose = true; - if (filePath.equals("--batch")) runAsBatch(); - // Ignore all other flags. - continue; + if (filePath.startsWith("-")) { + result.numberOfFileArguments--; + if (result.numberOfFileArguments == 0) return result; + if (filePath.equals("--verbose")) verbose = true; + if (filePath.equals("--batch")) runAsBatch(); + // Ignore all other flags. + continue; } if (verbose) System.err.println("Parsing file: " + filePath); DartLexer lexer = new DartLexer(new ANTLRFileStream(filePath));