Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(797)

Unified Diff: pkg/analyzer/test/generated/resolver_test.dart

Issue 123763002: New analyzer snapshot. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/analyzer/test/generated/parser_test.dart ('k') | tests/co19/co19-analyzer2.status » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/analyzer/test/generated/resolver_test.dart
diff --git a/pkg/analyzer/test/generated/resolver_test.dart b/pkg/analyzer/test/generated/resolver_test.dart
index d77f20052738a7554385c8a2e8ff21c6d53f73b1..f4694e71aa8d74c98a1275d0947ac549e7438e51 100644
--- a/pkg/analyzer/test/generated/resolver_test.dart
+++ b/pkg/analyzer/test/generated/resolver_test.dart
@@ -445,6 +445,7 @@ class TypePropagationTest extends ResolverTestCase {
" if (p is B) {",
" return p.m();",
" }",
+ " return p;",
"}"]));
LibraryElement library = resolve(source);
assertNoErrors(source);
@@ -464,6 +465,7 @@ class TypePropagationTest extends ResolverTestCase {
" while (p is A) {",
" return p;",
" }",
+ " return p;",
"}"]));
LibraryElement library = resolve(source);
assertNoErrors(source);
@@ -1205,6 +1207,62 @@ class NonErrorResolverTest extends ResolverTestCase {
verify([source]);
}
+ void test_commentReference_beforeFunction_blockBody() {
+ String code = EngineTestCase.createSource(["/// [p]", "foo(int p) {", "}"]);
+ Source source = addSource(code);
+ resolve(source);
+ assertNoErrors(source);
+ verify([source]);
+ CompilationUnit unit = analysisContext.parseCompilationUnit(source);
+ SimpleIdentifier ref = EngineTestCase.findNode(unit, code, "p]", SimpleIdentifier);
+ EngineTestCase.assertInstanceOf(ParameterElement, ref.staticElement);
+ }
+
+ void test_commentReference_beforeFunction_expressionBody() {
+ String code = EngineTestCase.createSource(["/// [p]", "foo(int p) => null;"]);
+ Source source = addSource(code);
+ resolve(source);
+ assertNoErrors(source);
+ verify([source]);
+ CompilationUnit unit = analysisContext.parseCompilationUnit(source);
+ SimpleIdentifier ref = EngineTestCase.findNode(unit, code, "p]", SimpleIdentifier);
+ EngineTestCase.assertInstanceOf(ParameterElement, ref.staticElement);
+ }
+
+ void test_commentReference_beforeMethod() {
+ String code = EngineTestCase.createSource([
+ "abstract class A {",
+ " /// [p1]",
+ " ma(int p1) {}",
+ " /// [p2]",
+ " mb(int p2);",
+ "}"]);
+ Source source = addSource(code);
+ resolve(source);
+ assertNoErrors(source);
+ verify([source]);
+ CompilationUnit unit = analysisContext.parseCompilationUnit(source);
+ {
+ SimpleIdentifier ref = EngineTestCase.findNode(unit, code, "p1]", SimpleIdentifier);
+ EngineTestCase.assertInstanceOf(ParameterElement, ref.staticElement);
+ }
+ {
+ SimpleIdentifier ref = EngineTestCase.findNode(unit, code, "p2]", SimpleIdentifier);
+ EngineTestCase.assertInstanceOf(ParameterElement, ref.staticElement);
+ }
+ }
+
+ void test_commentReference_class() {
+ String code = EngineTestCase.createSource(["/// [foo]", "class A {", " foo() {}", "}"]);
+ Source source = addSource(code);
+ resolve(source);
+ assertNoErrors(source);
+ verify([source]);
+ CompilationUnit unit = analysisContext.parseCompilationUnit(source);
+ SimpleIdentifier ref = EngineTestCase.findNode(unit, code, "foo]", SimpleIdentifier);
+ EngineTestCase.assertInstanceOf(MethodElement, ref.staticElement);
+ }
+
void test_concreteClassWithAbstractMember() {
Source source = addSource(EngineTestCase.createSource(["abstract class A {", " m();", "}"]));
resolve(source);
@@ -1751,7 +1809,7 @@ class NonErrorResolverTest extends ResolverTestCase {
}
void test_functionDeclaration_scope_returnType() {
- Source source = addSource(EngineTestCase.createSource(["int f(int) {}"]));
+ Source source = addSource(EngineTestCase.createSource(["int f(int) { return 0; }"]));
resolve(source);
assertNoErrors(source);
verify([source]);
@@ -2010,8 +2068,7 @@ class NonErrorResolverTest extends ResolverTestCase {
"class B<E> {",
" E get x {return 1;}",
"}",
- "class C<E> extends A<E> implements B<E> {",
- "}"]));
+ "class C<E> extends A<E> implements B<E> {}"]));
resolve(source);
assertNoErrors(source);
verify([source]);
@@ -2230,7 +2287,7 @@ class NonErrorResolverTest extends ResolverTestCase {
"class byte {",
" int _value;",
" byte(this._value);",
- " byte operator +(int val) {}",
+ " byte operator +(int val) { return this; }",
"}",
"",
"void main() {",
@@ -2490,7 +2547,7 @@ class NonErrorResolverTest extends ResolverTestCase {
" void m() {}",
"}",
"class B extends A {",
- " int m() {}",
+ " int m() { return 0; }",
"}"]));
resolve(source);
assertNoErrors(source);
@@ -2841,36 +2898,6 @@ class NonErrorResolverTest extends ResolverTestCase {
verify([source]);
}
- void test_nonAbstractClassInheritsAbstractMemberOne_abstractOverridesConcrete_accessor() {
- Source source = addSource(EngineTestCase.createSource([
- "class A {",
- " int get g => 0;",
- "}",
- "abstract class B extends A {",
- " int get g;",
- "}",
- "class C extends B {",
- "}"]));
- resolve(source);
- assertNoErrors(source);
- verify([source]);
- }
-
- void test_nonAbstractClassInheritsAbstractMemberOne_abstractOverridesConcrete_method() {
- Source source = addSource(EngineTestCase.createSource([
- "class A {",
- " m(p) {}",
- "}",
- "abstract class B extends A {",
- " m(p);",
- "}",
- "class C extends B {",
- "}"]));
- resolve(source);
- assertNoErrors(source);
- verify([source]);
- }
-
void test_nonAbstractClassInheritsAbstractMemberOne_noSuchMethod_accessor() {
Source source = addSource(EngineTestCase.createSource([
"abstract class A {",
@@ -4434,6 +4461,22 @@ class NonErrorResolverTest extends ResolverTestCase {
final __test = new NonErrorResolverTest();
runJUnitTest(__test, __test.test_caseExpressionTypeImplementsEquals_int);
});
+ _ut.test('test_commentReference_beforeFunction_blockBody', () {
+ final __test = new NonErrorResolverTest();
+ runJUnitTest(__test, __test.test_commentReference_beforeFunction_blockBody);
+ });
+ _ut.test('test_commentReference_beforeFunction_expressionBody', () {
+ final __test = new NonErrorResolverTest();
+ runJUnitTest(__test, __test.test_commentReference_beforeFunction_expressionBody);
+ });
+ _ut.test('test_commentReference_beforeMethod', () {
+ final __test = new NonErrorResolverTest();
+ runJUnitTest(__test, __test.test_commentReference_beforeMethod);
+ });
+ _ut.test('test_commentReference_class', () {
+ final __test = new NonErrorResolverTest();
+ runJUnitTest(__test, __test.test_commentReference_class);
+ });
_ut.test('test_concreteClassWithAbstractMember', () {
final __test = new NonErrorResolverTest();
runJUnitTest(__test, __test.test_concreteClassWithAbstractMember);
@@ -5038,14 +5081,6 @@ class NonErrorResolverTest extends ResolverTestCase {
final __test = new NonErrorResolverTest();
runJUnitTest(__test, __test.test_newWithUndefinedConstructorDefault);
});
- _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_abstractOverridesConcrete_accessor', () {
- final __test = new NonErrorResolverTest();
- runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberOne_abstractOverridesConcrete_accessor);
- });
- _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_abstractOverridesConcrete_method', () {
- final __test = new NonErrorResolverTest();
- runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberOne_abstractOverridesConcrete_method);
- });
_ut.test('test_nonAbstractClassInheritsAbstractMemberOne_noSuchMethod_accessor', () {
final __test = new NonErrorResolverTest();
runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberOne_noSuchMethod_accessor);
@@ -5985,7 +6020,7 @@ class StaticTypeWarningCodeTest extends ResolverTestCase {
"class byte {",
" int _value;",
" byte(this._value);",
- " int operator +(int val) {}",
+ " int operator +(int val) { return 0; }",
"}",
"",
"void main() {",
@@ -6206,6 +6241,7 @@ class StaticTypeWarningCodeTest extends ResolverTestCase {
"class A {",
" String m() {",
" int f() => '0';",
+ " return '0';",
" }",
"}"]));
resolve(source);
@@ -6246,6 +6282,7 @@ class StaticTypeWarningCodeTest extends ResolverTestCase {
"class A {",
" String m() {",
" int f() { return '0'; }",
+ " return '0';",
" }",
"}"]));
resolve(source);
@@ -6309,7 +6346,7 @@ class StaticTypeWarningCodeTest extends ResolverTestCase {
"class A {}",
"class B {}",
"class G<E extends A> {}",
- "G<B> f() {}"]));
+ "G<B> f() { return null; }"]));
resolve(source);
assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]);
verify([source]);
@@ -6365,7 +6402,7 @@ class StaticTypeWarningCodeTest extends ResolverTestCase {
"class B {}",
"class G<E extends A> {}",
"class C {",
- " G<B> m() {}",
+ " G<B> m() { return null; }",
"}"]));
resolve(source);
assertErrors(source, [StaticTypeWarningCode.TYPE_ARGUMENT_NOT_MATCHING_BOUNDS]);
@@ -7328,6 +7365,20 @@ class HintCodeTest extends ResolverTestCase {
verify([source]);
}
+ void fail_missingReturn_function() {
+ Source source = addSource(EngineTestCase.createSource(["int f() {}"]));
+ resolve(source);
+ assertErrors(source, [HintCode.MISSING_RETURN]);
+ verify([source]);
+ }
+
+ void fail_missingReturn_method() {
+ Source source = addSource(EngineTestCase.createSource(["class A {", " int m() {}", "}"]));
+ resolve(source);
+ assertErrors(source, [HintCode.MISSING_RETURN]);
+ verify([source]);
+ }
+
void fail_overrideEqualsButNotHashCode() {
Source source = addSource(EngineTestCase.createSource(["class A {", " bool operator ==(x) {}", "}"]));
resolve(source);
@@ -7569,7 +7620,7 @@ class HintCodeTest extends ResolverTestCase {
Source source = addSource(EngineTestCase.createSource([
"class A {",
" @deprecated",
- " A operator+(A a) {}",
+ " A operator+(A a) { return a; }",
"}",
"f(A a) {",
" A b;",
@@ -10265,13 +10316,6 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
check_constEvalTypeNum_withParameter_binary("p % ''");
}
- void test_constEvalTypeNum_plus_String() {
- Source source = addSource("const C = 'a' + 'b';");
- resolve(source);
- assertErrors(source, [CompileTimeErrorCode.CONST_EVAL_TYPE_NUM]);
- verify([source]);
- }
-
void test_constFormalParameter_fieldFormalParameter() {
Source source = addSource(EngineTestCase.createSource(["class A {", " var x;", " A(const this.x) {}", "}"]));
resolve(source);
@@ -13102,10 +13146,6 @@ class CompileTimeErrorCodeTest extends ResolverTestCase {
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_constEvalTypeNum_binary);
});
- _ut.test('test_constEvalTypeNum_plus_String', () {
- final __test = new CompileTimeErrorCodeTest();
- runJUnitTest(__test, __test.test_constEvalTypeNum_plus_String);
- });
_ut.test('test_constEval_newInstance_constConstructor', () {
final __test = new CompileTimeErrorCodeTest();
runJUnitTest(__test, __test.test_constEval_newInstance_constConstructor);
@@ -14965,6 +15005,57 @@ class ElementResolverTest extends EngineTestCase {
_listener.assertNoErrors();
}
+ void test_visitPrefixedIdentifier_staticClassMember_getter() {
+ ClassElementImpl classA = ElementFactory.classElement2("A", []);
+ String propName = "b";
+ PropertyAccessorElement getter = ElementFactory.getterElement(propName, false, _typeProvider.intType);
+ PropertyAccessorElement setter = ElementFactory.setterElement(propName, false, _typeProvider.intType);
+ classA.accessors = <PropertyAccessorElement> [getter, setter];
+ SimpleIdentifier target = ASTFactory.identifier3("A");
+ target.staticElement = classA;
+ target.staticType = classA.type;
+ PrefixedIdentifier identifier = ASTFactory.identifier(target, ASTFactory.identifier3(propName));
+ resolveNode(identifier, []);
+ JUnitTestCase.assertSame(getter, identifier.staticElement);
+ JUnitTestCase.assertSame(getter, identifier.identifier.staticElement);
+ _listener.assertNoErrors();
+ }
+
+ void test_visitPrefixedIdentifier_staticClassMember_method() {
+ ClassElementImpl classA = ElementFactory.classElement2("A", []);
+ String propName = "m";
+ PropertyAccessorElement setter = ElementFactory.setterElement(propName, false, _typeProvider.intType);
+ classA.accessors = <PropertyAccessorElement> [setter];
+ MethodElement method = ElementFactory.methodElement("m", _typeProvider.intType, []);
+ classA.methods = <MethodElement> [method];
+ SimpleIdentifier target = ASTFactory.identifier3("A");
+ target.staticElement = classA;
+ target.staticType = classA.type;
+ PrefixedIdentifier identifier = ASTFactory.identifier(target, ASTFactory.identifier3(propName));
+ ASTFactory.assignmentExpression(identifier, TokenType.EQ, ASTFactory.nullLiteral());
+ resolveNode(identifier, []);
+ JUnitTestCase.assertSame(method, identifier.staticElement);
+ JUnitTestCase.assertSame(method, identifier.identifier.staticElement);
+ _listener.assertNoErrors();
+ }
+
+ void test_visitPrefixedIdentifier_staticClassMember_setter() {
+ ClassElementImpl classA = ElementFactory.classElement2("A", []);
+ String propName = "b";
+ PropertyAccessorElement getter = ElementFactory.getterElement(propName, false, _typeProvider.intType);
+ PropertyAccessorElement setter = ElementFactory.setterElement(propName, false, _typeProvider.intType);
+ classA.accessors = <PropertyAccessorElement> [getter, setter];
+ SimpleIdentifier target = ASTFactory.identifier3("A");
+ target.staticElement = classA;
+ target.staticType = classA.type;
+ PrefixedIdentifier identifier = ASTFactory.identifier(target, ASTFactory.identifier3(propName));
+ ASTFactory.assignmentExpression(identifier, TokenType.EQ, ASTFactory.nullLiteral());
+ resolveNode(identifier, []);
+ JUnitTestCase.assertSame(setter, identifier.staticElement);
+ JUnitTestCase.assertSame(setter, identifier.identifier.staticElement);
+ _listener.assertNoErrors();
+ }
+
void test_visitPrefixExpression() {
InterfaceType numType = _typeProvider.numType;
SimpleIdentifier operand = ASTFactory.identifier3("i");
@@ -15347,6 +15438,18 @@ class ElementResolverTest extends EngineTestCase {
final __test = new ElementResolverTest();
runJUnitTest(__test, __test.test_visitPrefixedIdentifier_nonDynamic);
});
+ _ut.test('test_visitPrefixedIdentifier_staticClassMember_getter', () {
+ final __test = new ElementResolverTest();
+ runJUnitTest(__test, __test.test_visitPrefixedIdentifier_staticClassMember_getter);
+ });
+ _ut.test('test_visitPrefixedIdentifier_staticClassMember_method', () {
+ final __test = new ElementResolverTest();
+ runJUnitTest(__test, __test.test_visitPrefixedIdentifier_staticClassMember_method);
+ });
+ _ut.test('test_visitPrefixedIdentifier_staticClassMember_setter', () {
+ final __test = new ElementResolverTest();
+ runJUnitTest(__test, __test.test_visitPrefixedIdentifier_staticClassMember_setter);
+ });
_ut.test('test_visitPropertyAccess_getter_identifier', () {
final __test = new ElementResolverTest();
runJUnitTest(__test, __test.test_visitPropertyAccess_getter_identifier);
@@ -15724,9 +15827,10 @@ class StaticWarningCodeTest extends ResolverTestCase {
"typedef N FT(N p);",
"N f(N p) {",
" N v;",
+ " return null;",
"}",
"class A {",
- " N m() {}",
+ " N m() { return null; }",
"}",
"class B<T extends N> {}"]));
addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class N {}"]));
@@ -15747,7 +15851,7 @@ class StaticWarningCodeTest extends ResolverTestCase {
"import 'lib1.dart';",
"import 'lib2.dart';",
"class A<T> {}",
- "A<N> f() {}"]));
+ "A<N> f() { return null; }"]));
addSource2("/lib1.dart", EngineTestCase.createSource(["library lib1;", "class N {}"]));
addSource2("/lib2.dart", EngineTestCase.createSource(["library lib2;", "class N {}"]));
resolve(source);
@@ -15828,11 +15932,11 @@ class StaticWarningCodeTest extends ResolverTestCase {
verify([source]);
}
- void test_argumentTypeNotAssignable_cascadeSEcond() {
+ void test_argumentTypeNotAssignable_cascadeSecond() {
Source source = addSource(EngineTestCase.createSource([
"// filler filler filler filler filler filler filler filler filler filler",
"class A {",
- " B ma() {}",
+ " B ma() { return new B(); }",
"}",
"class B {",
" mb(String p) {}",
@@ -16828,7 +16932,7 @@ class StaticWarningCodeTest extends ResolverTestCase {
void test_invalidMethodOverrideReturnType_void() {
Source source = addSource(EngineTestCase.createSource([
"class A {",
- " int m() {}",
+ " int m() { return 0; }",
"}",
"class B extends A {",
" void m() {}",
@@ -17184,6 +17288,48 @@ class StaticWarningCodeTest extends ResolverTestCase {
verify([source]);
}
+ void test_nonAbstractClassInheritsAbstractMemberOne_abstractOverridesConcrete_accessor() {
+ Source source = addSource(EngineTestCase.createSource([
+ "class A {",
+ " int get g => 0;",
+ "}",
+ "abstract class B extends A {",
+ " int get g;",
+ "}",
+ "class C extends B {}"]));
+ resolve(source);
+ assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
+ verify([source]);
+ }
+
+ void test_nonAbstractClassInheritsAbstractMemberOne_abstractOverridesConcrete_method() {
+ Source source = addSource(EngineTestCase.createSource([
+ "class A {",
+ " m(p) {}",
+ "}",
+ "abstract class B extends A {",
+ " m(p);",
+ "}",
+ "class C extends B {}"]));
+ resolve(source);
+ assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
+ verify([source]);
+ }
+
+ void test_nonAbstractClassInheritsAbstractMemberOne_ensureCorrectFunctionSubtypeIsUsedInImplementation() {
+ Source source = addSource(EngineTestCase.createSource([
+ "class C {",
+ " foo(int x) => x;",
+ "}",
+ "abstract class D {",
+ " foo(x, [y]);",
+ "}",
+ "class E extends C implements D {}"]));
+ resolve(source);
+ assertErrors(source, [StaticWarningCode.NON_ABSTRACT_CLASS_INHERITS_ABSTRACT_MEMBER_ONE]);
+ verify([source]);
+ }
+
void test_nonAbstractClassInheritsAbstractMemberOne_getter_fromInterface() {
Source source = addSource(EngineTestCase.createSource([
"class I {",
@@ -17334,7 +17480,10 @@ class StaticWarningCodeTest extends ResolverTestCase {
}
void test_nonVoidReturnForOperator() {
- Source source = addSource(EngineTestCase.createSource(["class A {", " int operator []=(a, b) {}", "}"]));
+ Source source = addSource(EngineTestCase.createSource([
+ "class A {",
+ " int operator []=(a, b) { return a; }",
+ "}"]));
resolve(source);
assertErrors(source, [StaticWarningCode.NON_VOID_RETURN_FOR_OPERATOR]);
verify([source]);
@@ -17547,7 +17696,7 @@ class StaticWarningCodeTest extends ResolverTestCase {
}
void test_typeParameterReferencedByStatic_methodReturn() {
- Source source = addSource(EngineTestCase.createSource(["class A<K> {", " static K m() {}", "}"]));
+ Source source = addSource(EngineTestCase.createSource(["class A<K> {", " static K m() { return null; }", "}"]));
resolve(source);
assertErrors(source, [StaticWarningCode.TYPE_PARAMETER_REFERENCED_BY_STATIC]);
verify([source]);
@@ -17809,9 +17958,9 @@ class StaticWarningCodeTest extends ResolverTestCase {
final __test = new StaticWarningCodeTest();
runJUnitTest(__test, __test.test_argumentTypeNotAssignable_binary);
});
- _ut.test('test_argumentTypeNotAssignable_cascadeSEcond', () {
+ _ut.test('test_argumentTypeNotAssignable_cascadeSecond', () {
final __test = new StaticWarningCodeTest();
- runJUnitTest(__test, __test.test_argumentTypeNotAssignable_cascadeSEcond);
+ runJUnitTest(__test, __test.test_argumentTypeNotAssignable_cascadeSecond);
});
_ut.test('test_argumentTypeNotAssignable_const', () {
final __test = new StaticWarningCodeTest();
@@ -18285,6 +18434,18 @@ class StaticWarningCodeTest extends ResolverTestCase {
final __test = new StaticWarningCodeTest();
runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberFour);
});
+ _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_abstractOverridesConcrete_accessor', () {
+ final __test = new StaticWarningCodeTest();
+ runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberOne_abstractOverridesConcrete_accessor);
+ });
+ _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_abstractOverridesConcrete_method', () {
+ final __test = new StaticWarningCodeTest();
+ runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberOne_abstractOverridesConcrete_method);
+ });
+ _ut.test('test_nonAbstractClassInheritsAbstractMemberOne_ensureCorrectFunctionSubtypeIsUsedInImplementation', () {
+ final __test = new StaticWarningCodeTest();
+ runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberOne_ensureCorrectFunctionSubtypeIsUsedInImplementation);
+ });
_ut.test('test_nonAbstractClassInheritsAbstractMemberOne_getter_fromInterface', () {
final __test = new StaticWarningCodeTest();
runJUnitTest(__test, __test.test_nonAbstractClassInheritsAbstractMemberOne_getter_fromInterface);
@@ -18525,6 +18686,43 @@ class StaticWarningCodeTest extends ResolverTestCase {
}
}
+/**
+ * Helper for creating and managing single [AnalysisContext].
+ */
+class AnalysisContextHelper {
+ AnalysisContext context;
+
+ SourceFactory _sourceFactory;
+
+ ContentCache _cache;
+
+ /**
+ * Creates new [AnalysisContext] using [AnalysisContextFactory#contextWithCore].
+ */
+ AnalysisContextHelper() {
+ context = AnalysisContextFactory.contextWithCore();
+ _sourceFactory = context.sourceFactory;
+ _cache = _sourceFactory.contentCache;
+ }
+
+ Source addSource(String path, String code) {
+ Source source = new FileBasedSource.con1(_cache, FileUtilities2.createFile(path));
+ {
+ _sourceFactory.setContents(source, "");
+ ChangeSet changeSet = new ChangeSet();
+ changeSet.added(source);
+ context.applyChanges(changeSet);
+ }
+ context.setContents(source, code);
+ return source;
+ }
+
+ CompilationUnit resolveDefiningUnit(Source source) {
+ LibraryElement libraryElement = context.computeLibraryElement(source);
+ return context.resolveCompilationUnit(source, libraryElement);
+ }
+}
+
class ErrorResolverTest extends ResolverTestCase {
void test_breakLabelOnSwitchMember() {
Source source = addSource(EngineTestCase.createSource([
@@ -19095,7 +19293,7 @@ class LibraryImportScopeTest extends ResolverTestCase {
LibraryElement importedLibrary = createTestLibrary2(context, "imported", []);
(importedLibrary.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [importedType];
LibraryElementImpl definingLibrary = createTestLibrary2(context, "importing", []);
- ImportElementImpl importElement = new ImportElementImpl();
+ ImportElementImpl importElement = new ImportElementImpl(0);
importElement.importedLibrary = importedLibrary;
definingLibrary.imports = <ImportElement> [importElement];
GatheringErrorListener errorListener = new GatheringErrorListener();
@@ -19551,7 +19749,7 @@ class LibraryScopeTest extends ResolverTestCase {
LibraryElement importedLibrary = createTestLibrary2(context, "imported", []);
(importedLibrary.definingCompilationUnit as CompilationUnitElementImpl).types = <ClassElement> [importedType];
LibraryElementImpl definingLibrary = createTestLibrary2(context, "importing", []);
- ImportElementImpl importElement = new ImportElementImpl();
+ ImportElementImpl importElement = new ImportElementImpl(0);
importElement.importedLibrary = importedLibrary;
definingLibrary.imports = <ImportElement> [importElement];
GatheringErrorListener errorListener = new GatheringErrorListener();
@@ -20870,7 +21068,7 @@ class NonHintCodeTest extends ResolverTestCase {
void test_divisionOptimization_supressIfDivisionOverridden() {
Source source = addSource(EngineTestCase.createSource([
"class A {",
- " num operator /(x) {}",
+ " num operator /(x) { return x; }",
"}",
"f(A x, A y) {",
" var v = (x / y).toInt();",
@@ -20919,6 +21117,34 @@ class NonHintCodeTest extends ResolverTestCase {
verify([source]);
}
+ void test_missingReturn_emptyFunctionBody() {
+ Source source = addSource(EngineTestCase.createSource(["abstract class A {", " int m();", "}"]));
+ resolve(source);
+ assertNoErrors(source);
+ verify([source]);
+ }
+
+ void test_missingReturn_expressionFunctionBody() {
+ Source source = addSource(EngineTestCase.createSource(["int f() => 0;"]));
+ resolve(source);
+ assertNoErrors(source);
+ verify([source]);
+ }
+
+ void test_missingReturn_noReturnType() {
+ Source source = addSource(EngineTestCase.createSource(["f() {}"]));
+ resolve(source);
+ assertNoErrors(source);
+ verify([source]);
+ }
+
+ void test_missingReturn_voidReturnType() {
+ Source source = addSource(EngineTestCase.createSource(["void f() {}"]));
+ resolve(source);
+ assertNoErrors(source);
+ verify([source]);
+ }
+
void test_overriddingPrivateMember_sameLibrary() {
Source source = addSource(EngineTestCase.createSource([
"class A {",
@@ -20935,7 +21161,7 @@ class NonHintCodeTest extends ResolverTestCase {
void test_overrideEqualsButNotHashCode() {
Source source = addSource(EngineTestCase.createSource([
"class A {",
- " bool operator ==(x) {}",
+ " bool operator ==(x) { return x; }",
" get hashCode => 0;",
"}"]));
resolve(source);
@@ -21311,6 +21537,22 @@ class NonHintCodeTest extends ResolverTestCase {
final __test = new NonHintCodeTest();
runJUnitTest(__test, __test.test_duplicateImport_show);
});
+ _ut.test('test_missingReturn_emptyFunctionBody', () {
+ final __test = new NonHintCodeTest();
+ runJUnitTest(__test, __test.test_missingReturn_emptyFunctionBody);
+ });
+ _ut.test('test_missingReturn_expressionFunctionBody', () {
+ final __test = new NonHintCodeTest();
+ runJUnitTest(__test, __test.test_missingReturn_expressionFunctionBody);
+ });
+ _ut.test('test_missingReturn_noReturnType', () {
+ final __test = new NonHintCodeTest();
+ runJUnitTest(__test, __test.test_missingReturn_noReturnType);
+ });
+ _ut.test('test_missingReturn_voidReturnType', () {
+ final __test = new NonHintCodeTest();
+ runJUnitTest(__test, __test.test_missingReturn_voidReturnType);
+ });
_ut.test('test_overriddingPrivateMember_sameLibrary', () {
final __test = new NonHintCodeTest();
runJUnitTest(__test, __test.test_overriddingPrivateMember_sameLibrary);
@@ -21414,7 +21656,7 @@ class NonHintCodeTest extends ResolverTestCase {
class EnclosedScopeTest extends ResolverTestCase {
void test_define_duplicate() {
GatheringErrorListener errorListener2 = new GatheringErrorListener();
- Scope rootScope = new Scope_24(errorListener2);
+ Scope rootScope = new Scope_25(errorListener2);
EnclosedScope scope = new EnclosedScope(rootScope);
VariableElement element1 = ElementFactory.localVariableElement(ASTFactory.identifier3("v1"));
VariableElement element2 = ElementFactory.localVariableElement(ASTFactory.identifier3("v1"));
@@ -21425,7 +21667,7 @@ class EnclosedScopeTest extends ResolverTestCase {
void test_define_normal() {
GatheringErrorListener errorListener3 = new GatheringErrorListener();
- Scope rootScope = new Scope_25(errorListener3);
+ Scope rootScope = new Scope_26(errorListener3);
EnclosedScope outerScope = new EnclosedScope(rootScope);
EnclosedScope innerScope = new EnclosedScope(outerScope);
VariableElement element1 = ElementFactory.localVariableElement(ASTFactory.identifier3("v1"));
@@ -21449,20 +21691,20 @@ class EnclosedScopeTest extends ResolverTestCase {
}
}
-class Scope_24 extends Scope {
+class Scope_25 extends Scope {
GatheringErrorListener errorListener2;
- Scope_24(this.errorListener2) : super();
+ Scope_25(this.errorListener2) : super();
AnalysisErrorListener get errorListener => errorListener2;
Element lookup3(Identifier identifier, String name, LibraryElement referencingLibrary) => null;
}
-class Scope_25 extends Scope {
+class Scope_26 extends Scope {
GatheringErrorListener errorListener3;
- Scope_25(this.errorListener3) : super();
+ Scope_26(this.errorListener3) : super();
AnalysisErrorListener get errorListener => errorListener3;
@@ -22194,7 +22436,7 @@ class SimpleResolverTest extends ResolverTestCase {
JUnitTestCase.assertNotNull(unit);
List<bool> found = [false];
List<AnalysisException> thrownException = new List<AnalysisException>(1);
- unit.accept(new RecursiveASTVisitor_28(this, found, thrownException));
+ unit.accept(new RecursiveASTVisitor_29(this, found, thrownException));
if (thrownException[0] != null) {
throw new AnalysisException.con3(thrownException[0]);
}
@@ -22590,14 +22832,14 @@ class SimpleResolverTest extends ResolverTestCase {
}
}
-class RecursiveASTVisitor_28 extends RecursiveASTVisitor<Object> {
+class RecursiveASTVisitor_29 extends RecursiveASTVisitor<Object> {
final SimpleResolverTest SimpleResolverTest_this;
List<bool> found;
List<AnalysisException> thrownException;
- RecursiveASTVisitor_28(this.SimpleResolverTest_this, this.found, this.thrownException) : super();
+ RecursiveASTVisitor_29(this.SimpleResolverTest_this, this.found, this.thrownException) : super();
Object visitSimpleIdentifier(SimpleIdentifier node) {
if (node.name == "myVar" && node.parent is MethodInvocation) {
« no previous file with comments | « pkg/analyzer/test/generated/parser_test.dart ('k') | tests/co19/co19-analyzer2.status » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698