Index: editor/tools/plugins/com.google.dart.engine_test/src/com/google/dart/engine/parser/ErrorParserTest.java |
=================================================================== |
--- editor/tools/plugins/com.google.dart.engine_test/src/com/google/dart/engine/parser/ErrorParserTest.java (revision 15397) |
+++ editor/tools/plugins/com.google.dart.engine_test/src/com/google/dart/engine/parser/ErrorParserTest.java (working copy) |
@@ -48,7 +48,7 @@ |
} |
public void fail_invalidCommentReference__new_nonIdentifier() throws Exception { |
- // This test fails because the parse method returns null. |
+ // This test fails because the method parseCommentReference returns null. |
parse( |
"parseCommentReference", |
new Class[] {String.class, int.class}, |
@@ -57,8 +57,13 @@ |
ParserErrorCode.INVALID_COMMENT_REFERENCE); |
} |
+ public void fail_invalidCommentReference__new_tooMuch() throws Exception { |
+ parse("parseCommentReference", new Class[] {String.class, int.class}, new Object[] { |
+ "new a.b.c.d", 0}, "", ParserErrorCode.INVALID_COMMENT_REFERENCE); |
+ } |
+ |
public void fail_invalidCommentReference__nonNew_nonIdentifier() throws Exception { |
- // This test fails because the parse method returns null. |
+ // This test fails because the method parseCommentReference returns null. |
parse( |
"parseCommentReference", |
new Class[] {String.class, int.class}, |
@@ -67,11 +72,40 @@ |
ParserErrorCode.INVALID_COMMENT_REFERENCE); |
} |
+ public void fail_invalidCommentReference__nonNew_tooMuch() throws Exception { |
+ parse("parseCommentReference", new Class[] {String.class, int.class}, new Object[] { |
+ "a.b.c.d", 0}, "", ParserErrorCode.INVALID_COMMENT_REFERENCE); |
+ } |
+ |
+ public void fail_missingFunctionParameters_local_nonVoid_block() throws Exception { |
+ // The parser does not recognize this as a function declaration, so it tries to parse it as an |
+ // expression statement. It isn't clear what the best error message is in this case. |
+ parse("parseStatement", "int f { return x;}", ParserErrorCode.MISSING_FUNCTION_PARAMETERS); |
+ } |
+ |
+ public void fail_missingFunctionParameters_local_nonVoid_expression() throws Exception { |
+ // The parser does not recognize this as a function declaration, so it tries to parse it as an |
+ // expression statement. It isn't clear what the best error message is in this case. |
+ parse("parseStatement", "int f => x;", ParserErrorCode.MISSING_FUNCTION_PARAMETERS); |
+ } |
+ |
public void fail_unexpectedToken_invalidPostfixExpression() throws Exception { |
// Note: this might not be the right error to produce, but some error should be produced |
parse("parseExpression", "f()++", ParserErrorCode.UNEXPECTED_TOKEN); |
} |
+ public void fail_voidVariable_initializer() throws Exception { |
+ // The parser parses this as a function declaration statement because that is the only thing |
+ // that validly starts with 'void'. That causes a different error message to be produced. |
+ parse("parseStatement", "void x = 0;", ParserErrorCode.VOID_VARIABLE); |
+ } |
+ |
+ public void fail_voidVariable_noInitializer() throws Exception { |
+ // The parser parses this as a function declaration statement because that is the only thing |
+ // that validly starts with 'void'. That causes a different error message to be produced. |
+ parse("parseStatement", "void x;", ParserErrorCode.VOID_VARIABLE); |
+ } |
+ |
public void test_abstractClassMember_constructor() throws Exception { |
parse( |
"parseClassMember", |
@@ -117,6 +151,29 @@ |
ParserErrorCode.ABSTRACT_CLASS_MEMBER); |
} |
+ public void test_abstractTopLevelFunction_function() throws Exception { |
+ parse("parseCompilationUnit", "abstract f(v) {}", ParserErrorCode.ABSTRACT_TOP_LEVEL_FUNCTION); |
+ } |
+ |
+ public void test_abstractTopLevelFunction_getter() throws Exception { |
+ parse("parseCompilationUnit", "abstract get m {}", ParserErrorCode.ABSTRACT_TOP_LEVEL_FUNCTION); |
+ } |
+ |
+ public void test_abstractTopLevelFunction_setter() throws Exception { |
+ parse( |
+ "parseCompilationUnit", |
+ "abstract set m(v) {}", |
+ ParserErrorCode.ABSTRACT_TOP_LEVEL_FUNCTION); |
+ } |
+ |
+ public void test_abstractTopLevelVariable() throws Exception { |
+ parse("parseCompilationUnit", "abstract C f;", ParserErrorCode.ABSTRACT_TOP_LEVEL_VARIABLE); |
+ } |
+ |
+ public void test_abstractTypeDef() throws Exception { |
+ parse("parseCompilationUnit", "abstract typedef F();", ParserErrorCode.ABSTRACT_TYPEDEF); |
+ } |
+ |
public void test_breakOutsideOfLoop_breakInDoStatement() throws Exception { |
parse("parseDoStatement", "do {break;} while (x);"); |
} |
@@ -157,8 +214,8 @@ |
public void test_builtInIdentifierAsTypeName() throws Exception { |
parse( |
"parseClassDeclaration", |
- new Class[] {CommentAndMetadata.class}, |
- new Object[] {emptyCommentAndMetadata()}, |
+ new Class[] {CommentAndMetadata.class, Token.class}, |
+ new Object[] {emptyCommentAndMetadata(), null}, |
"class as {}", |
ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_NAME); |
} |
@@ -167,15 +224,6 @@ |
parse("parseTypeParameter", "as", ParserErrorCode.BUILT_IN_IDENTIFIER_AS_TYPE_VARIABLE_NAME); |
} |
- public void test_constAndFactory() throws Exception { |
- parse( |
- "parseClassMember", |
- new Class[] {String.class}, |
- new Object[] {"C"}, |
- "const factory C() {}", |
- ParserErrorCode.CONST_AND_FACTORY); |
- } |
- |
public void test_constAndFinal() throws Exception { |
parse( |
"parseClassMember", |
@@ -194,6 +242,10 @@ |
ParserErrorCode.CONST_AND_VAR); |
} |
+ public void test_constClass() throws Exception { |
+ parse("parseCompilationUnit", "const class C {}", ParserErrorCode.CONST_CLASS); |
+ } |
+ |
public void test_constMethod() throws Exception { |
parse( |
"parseClassMember", |
@@ -203,6 +255,10 @@ |
ParserErrorCode.CONST_METHOD); |
} |
+ public void test_constTypedef() throws Exception { |
+ parse("parseCompilationUnit", "const typedef F();", ParserErrorCode.CONST_TYPEDEF); |
+ } |
+ |
public void test_continueOutsideOfLoop_continueInDoStatement() throws Exception { |
parse("parseDoStatement", "do {continue;} while (x);"); |
} |
@@ -381,6 +437,10 @@ |
ParserErrorCode.EXTERNAL_AFTER_STATIC); |
} |
+ public void test_externalClass() throws Exception { |
+ parse("parseCompilationUnit", "external class C {}", ParserErrorCode.EXTERNAL_CLASS); |
+ } |
+ |
public void test_externalConstructorWithBody_factory() throws Exception { |
parse( |
"parseClassMember", |
@@ -480,6 +540,24 @@ |
ParserErrorCode.EXTERNAL_SETTER_WITH_BODY); |
} |
+ public void test_externalTypedef() throws Exception { |
+ parse("parseCompilationUnit", "external typedef F();", ParserErrorCode.EXTERNAL_TYPEDEF); |
+ } |
+ |
+ public void test_factoryTopLevelDeclaration_class() throws Exception { |
+ parse( |
+ "parseCompilationUnit", |
+ "factory class C {}", |
+ ParserErrorCode.FACTORY_TOP_LEVEL_DECLARATION); |
+ } |
+ |
+ public void test_factoryTopLevelDeclaration_typedef() throws Exception { |
+ parse( |
+ "parseCompilationUnit", |
+ "factory typedef F();", |
+ ParserErrorCode.FACTORY_TOP_LEVEL_DECLARATION); |
+ } |
+ |
public void test_fieldInitializerOutsideConstructor() throws Exception { |
parse( |
"parseClassMember", |
@@ -498,6 +576,10 @@ |
ParserErrorCode.FINAL_AND_VAR); |
} |
+ public void test_finalClass() throws Exception { |
+ parse("parseCompilationUnit", "final class C {}", ParserErrorCode.FINAL_CLASS); |
+ } |
+ |
public void test_finalConstructor() throws Exception { |
parse( |
"parseClassMember", |
@@ -516,6 +598,10 @@ |
ParserErrorCode.FINAL_METHOD); |
} |
+ public void test_finalTypedef() throws Exception { |
+ parse("parseCompilationUnit", "final typedef F();", ParserErrorCode.FINAL_TYPEDEF); |
+ } |
+ |
public void test_getterWithParameters() throws Exception { |
parse( |
"parseClassMember", |
@@ -554,16 +640,6 @@ |
parse("parseStringLiteral", "'\\uD900'", ParserErrorCode.INVALID_CODE_POINT); |
} |
- public void test_invalidCommentReference__new_tooMuch() throws Exception { |
- parse("parseCommentReference", new Class[] {String.class, int.class}, new Object[] { |
- "new a.b.c.d", 0}, "", ParserErrorCode.INVALID_COMMENT_REFERENCE); |
- } |
- |
- public void test_invalidCommentReference__nonNew_tooMuch() throws Exception { |
- parse("parseCommentReference", new Class[] {String.class, int.class}, new Object[] { |
- "a.b.c.d", 0}, "", ParserErrorCode.INVALID_COMMENT_REFERENCE); |
- } |
- |
public void test_invalidHexEscape_invalidDigit() throws Exception { |
parse("parseStringLiteral", "'\\x0 a'", ParserErrorCode.INVALID_HEX_ESCAPE); |
} |
@@ -670,6 +746,33 @@ |
false, false}, "return 0;", ParserErrorCode.MISSING_FUNCTION_BODY); |
} |
+ public void test_missingFunctionParameters_local_void_block() throws Exception { |
+ parse("parseStatement", "void f { return x;}", ParserErrorCode.MISSING_FUNCTION_PARAMETERS); |
+ } |
+ |
+ public void test_missingFunctionParameters_local_void_expression() throws Exception { |
+ parse("parseStatement", "void f => x;", ParserErrorCode.MISSING_FUNCTION_PARAMETERS); |
+ } |
+ |
+ public void test_missingFunctionParameters_topLevel_nonVoid_block() throws Exception { |
+ parse("parseCompilationUnit", "int f { return x;}", ParserErrorCode.MISSING_FUNCTION_PARAMETERS); |
+ } |
+ |
+ public void test_missingFunctionParameters_topLevel_nonVoid_expression() throws Exception { |
+ parse("parseCompilationUnit", "int f => x;", ParserErrorCode.MISSING_FUNCTION_PARAMETERS); |
+ } |
+ |
+ public void test_missingFunctionParameters_topLevel_void_block() throws Exception { |
+ parse( |
+ "parseCompilationUnit", |
+ "void f { return x;}", |
+ ParserErrorCode.MISSING_FUNCTION_PARAMETERS); |
+ } |
+ |
+ public void test_missingFunctionParameters_topLevel_void_expression() throws Exception { |
+ parse("parseCompilationUnit", "void f => x;", ParserErrorCode.MISSING_FUNCTION_PARAMETERS); |
+ } |
+ |
public void test_missingIdentifier_functionDeclaration_returnTypeWithoutName() throws Exception { |
parse("parseFunctionDeclarationStatement", "A<T> () {}", ParserErrorCode.MISSING_IDENTIFIER); |
} |
@@ -698,6 +801,18 @@ |
assertNotNull(unit); |
} |
+ public void test_missingTypedefParameters_nonVoid() throws Exception { |
+ parse("parseCompilationUnit", "typedef int F;", ParserErrorCode.MISSING_TYPEDEF_PARAMETERS); |
+ } |
+ |
+ public void test_missingTypedefParameters_typeParameters() throws Exception { |
+ parse("parseCompilationUnit", "typedef F<E>;", ParserErrorCode.MISSING_TYPEDEF_PARAMETERS); |
+ } |
+ |
+ public void test_missingTypedefParameters_void() throws Exception { |
+ parse("parseCompilationUnit", "typedef void F;", ParserErrorCode.MISSING_TYPEDEF_PARAMETERS); |
+ } |
+ |
public void test_missingVariableInForEach() throws Exception { |
parse( |
"parseForStatement", |
@@ -874,20 +989,26 @@ |
ParserErrorCode.STATIC_OPERATOR); |
} |
- public void test_staticTopLevelDeclaration() throws Exception { |
+ public void test_staticTopLevelDeclaration_class() throws Exception { |
+ parse("parseCompilationUnit", "static class C {}", ParserErrorCode.STATIC_TOP_LEVEL_DECLARATION); |
+ } |
+ |
+ public void test_staticTopLevelDeclaration_typedef() throws Exception { |
parse( |
- "parseCompilationUnitMember", |
- new Class[] {CommentAndMetadata.class}, |
- new Object[] {emptyCommentAndMetadata()}, |
- "static var x;", |
+ "parseCompilationUnit", |
+ "static typedef F();", |
ParserErrorCode.STATIC_TOP_LEVEL_DECLARATION); |
} |
+ public void test_staticTopLevelDeclaration_variable() throws Exception { |
+ parse("parseCompilationUnit", "static var x;", ParserErrorCode.STATIC_TOP_LEVEL_DECLARATION); |
+ } |
+ |
public void test_unexpectedToken_semicolonBetweenClassMembers() throws Exception { |
parse( |
"parseClassDeclaration", |
- new Class[] {CommentAndMetadata.class}, |
- new Object[] {emptyCommentAndMetadata()}, |
+ new Class[] {CommentAndMetadata.class, Token.class}, |
+ new Object[] {emptyCommentAndMetadata(), null}, |
"class C { int x; ; int y;}", |
ParserErrorCode.UNEXPECTED_TOKEN); |
} |
@@ -900,6 +1021,10 @@ |
parse("parseUnaryExpression", "+x", ParserErrorCode.USE_OF_UNARY_PLUS_OPERATOR); |
} |
+ public void test_varClass() throws Exception { |
+ parse("parseCompilationUnit", "var class C {}", ParserErrorCode.VAR_CLASS); |
+ } |
+ |
public void test_varConstructor() throws Exception { |
parse( |
"parseClassMember", |
@@ -918,6 +1043,28 @@ |
ParserErrorCode.VAR_RETURN_TYPE); |
} |
+ public void test_varTypedef() throws Exception { |
+ parse("parseCompilationUnit", "var typedef F();", ParserErrorCode.VAR_TYPEDEF); |
+ } |
+ |
+ public void test_voidField_initializer() throws Exception { |
+ parse( |
+ "parseClassMember", |
+ new Class[] {String.class}, |
+ new Object[] {"C"}, |
+ "void x = 0;", |
+ ParserErrorCode.VOID_VARIABLE); |
+ } |
+ |
+ public void test_voidField_noInitializer() throws Exception { |
+ parse( |
+ "parseClassMember", |
+ new Class[] {String.class}, |
+ new Object[] {"C"}, |
+ "void x;", |
+ ParserErrorCode.VOID_VARIABLE); |
+ } |
+ |
public void test_voidParameter() throws Exception { |
parse("parseNormalFormalParameter", "void a)", ParserErrorCode.VOID_PARAMETER); |
} |