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 9d5693f687cd2b82d40478f527a44871e7f0747c..2735d72e9fd31470b2cc99b39b986f2c0eec223a 100644 |
--- a/pkg/analyzer/test/generated/resolver_test.dart |
+++ b/pkg/analyzer/test/generated/resolver_test.dart |
@@ -63,17 +63,17 @@ class AnalysisContextFactory { |
* @return the analysis context that was created |
*/ |
static AnalysisContextImpl initContextWithCore(AnalysisContextImpl context) { |
- SourceFactory sourceFactory = new SourceFactory([ |
- new DartUriResolver(DirectoryBasedDartSdk.defaultSdk), |
- new FileUriResolver()]); |
+ DirectoryBasedDartSdk sdk = DirectoryBasedDartSdk.defaultSdk; |
+ SourceFactory sourceFactory = new SourceFactory([new DartUriResolver(sdk), new FileUriResolver()]); |
context.sourceFactory = sourceFactory; |
+ AnalysisContext coreContext = sdk.context; |
// |
// dart:core |
// |
TestTypeProvider provider = new TestTypeProvider(); |
CompilationUnitElementImpl coreUnit = new CompilationUnitElementImpl("core.dart"); |
Source coreSource = sourceFactory.forUri(DartSdk.DART_CORE); |
- context.setContents(coreSource, ""); |
+ coreContext.setContents(coreSource, ""); |
coreUnit.source = coreSource; |
ClassElementImpl proxyClassElement = ElementFactory.classElement2("_Proxy", []); |
coreUnit.types = <ClassElement> [ |
@@ -101,14 +101,14 @@ class AnalysisContextFactory { |
deprecatedTopLevelVariableElt.getter, |
deprecatedTopLevelVariableElt.setter]; |
coreUnit.topLevelVariables = <TopLevelVariableElement> [proxyTopLevelVariableElt, deprecatedTopLevelVariableElt]; |
- LibraryElementImpl coreLibrary = new LibraryElementImpl.forNode(context, AstFactory.libraryIdentifier2(["dart", "core"])); |
+ LibraryElementImpl coreLibrary = new LibraryElementImpl.forNode(coreContext, AstFactory.libraryIdentifier2(["dart", "core"])); |
coreLibrary.definingCompilationUnit = coreUnit; |
// |
// dart:async |
// |
CompilationUnitElementImpl asyncUnit = new CompilationUnitElementImpl("async.dart"); |
Source asyncSource = sourceFactory.forUri(DartSdk.DART_ASYNC); |
- context.setContents(asyncSource, ""); |
+ coreContext.setContents(asyncSource, ""); |
asyncUnit.source = asyncSource; |
// Future |
ClassElementImpl futureElement = ElementFactory.classElement2("Future", ["T"]); |
@@ -141,14 +141,14 @@ class AnalysisContextFactory { |
completerElement, |
futureElement, |
ElementFactory.classElement2("Stream", ["T"])]; |
- LibraryElementImpl asyncLibrary = new LibraryElementImpl.forNode(context, AstFactory.libraryIdentifier2(["dart", "async"])); |
+ LibraryElementImpl asyncLibrary = new LibraryElementImpl.forNode(coreContext, AstFactory.libraryIdentifier2(["dart", "async"])); |
asyncLibrary.definingCompilationUnit = asyncUnit; |
// |
// dart:html |
// |
CompilationUnitElementImpl htmlUnit = new CompilationUnitElementImpl("html_dartium.dart"); |
Source htmlSource = sourceFactory.forUri(DartSdk.DART_HTML); |
- context.setContents(htmlSource, ""); |
+ coreContext.setContents(htmlSource, ""); |
htmlUnit.source = htmlSource; |
ClassElementImpl elementElement = ElementFactory.classElement2("Element", []); |
InterfaceType elementType = elementElement.type; |
@@ -178,7 +178,7 @@ class AnalysisContextFactory { |
TopLevelVariableElementImpl document = ElementFactory.topLevelVariableElement3("document", false, true, htmlDocumentElement.type); |
htmlUnit.topLevelVariables = <TopLevelVariableElement> [document]; |
htmlUnit.accessors = <PropertyAccessorElement> [document.getter]; |
- LibraryElementImpl htmlLibrary = new LibraryElementImpl.forNode(context, AstFactory.libraryIdentifier2(["dart", "dom", "html"])); |
+ LibraryElementImpl htmlLibrary = new LibraryElementImpl.forNode(coreContext, AstFactory.libraryIdentifier2(["dart", "dom", "html"])); |
htmlLibrary.definingCompilationUnit = htmlUnit; |
HashMap<Source, LibraryElement> elementMap = new HashMap<Source, LibraryElement>(); |
elementMap[coreSource] = coreLibrary; |
@@ -27421,32 +27421,6 @@ class TypePropagationTest extends ResolverTestCase { |
"}"]), null, typeProvider.dynamicType); |
} |
- void fail_mergePropagatedTypesAtJoinPoint_6() { |
- // https://code.google.com/p/dart/issues/detail?id=19929 |
- // |
- // Labeled [break]s are unsafe for the purposes of [isAbruptTerminationStatement]. |
- // |
- // This is tricky: the [break] jumps back above the [if], making |
- // it into a loop of sorts. The [if] type-propagation code assumes |
- // that [break] does not introduce a loop. |
- String code = EngineTestCase.createSource([ |
- "f() {", |
- " var x = 0;", |
- " var c = false;", |
- " L: ", |
- " if (c) {", |
- " } else {", |
- " x = '';", |
- " c = true;", |
- " break L;", |
- " }", |
- " x; // marker", |
- "}"]); |
- DartType t = _findMarkedIdentifier(code, "; // marker").propagatedType; |
- JUnitTestCase.assertTrue(typeProvider.intType.isSubtypeOf(t)); |
- JUnitTestCase.assertTrue(typeProvider.stringType.isSubtypeOf(t)); |
- } |
- |
void fail_mergePropagatedTypesAtJoinPoint_7() { |
// https://code.google.com/p/dart/issues/detail?id=19929 |
// |
@@ -28340,6 +28314,32 @@ class TypePropagationTest extends ResolverTestCase { |
"}"]), null, typeProvider.intType); |
} |
+ void test_mergePropagatedTypesAtJoinPoint_6() { |
+ // https://code.google.com/p/dart/issues/detail?id=19929 |
+ // |
+ // Labeled [break]s are unsafe for the purposes of [isAbruptTerminationStatement]. |
+ // |
+ // This is tricky: the [break] jumps back above the [if], making |
+ // it into a loop of sorts. The [if] type-propagation code assumes |
+ // that [break] does not introduce a loop. |
+ String code = EngineTestCase.createSource([ |
+ "f() {", |
+ " var x = 0;", |
+ " var c = false;", |
+ " L: ", |
+ " if (c) {", |
+ " } else {", |
+ " x = '';", |
+ " c = true;", |
+ " break L;", |
+ " }", |
+ " x; // marker", |
+ "}"]); |
+ DartType t = _findMarkedIdentifier(code, "; // marker").propagatedType; |
+ JUnitTestCase.assertTrue(typeProvider.intType.isSubtypeOf(t)); |
+ JUnitTestCase.assertTrue(typeProvider.stringType.isSubtypeOf(t)); |
+ } |
+ |
void test_objectMethodOnDynamicExpression_doubleEquals() { |
// https://code.google.com/p/dart/issues/detail?id=20342 |
// |
@@ -28696,6 +28696,10 @@ class TypePropagationTest extends ResolverTestCase { |
final __test = new TypePropagationTest(); |
runJUnitTest(__test, __test.test_mergePropagatedTypesAtJoinPoint_4); |
}); |
+ _ut.test('test_mergePropagatedTypesAtJoinPoint_6', () { |
+ final __test = new TypePropagationTest(); |
+ runJUnitTest(__test, __test.test_mergePropagatedTypesAtJoinPoint_6); |
+ }); |
_ut.test('test_objectMethodOnDynamicExpression_doubleEquals', () { |
final __test = new TypePropagationTest(); |
runJUnitTest(__test, __test.test_objectMethodOnDynamicExpression_doubleEquals); |