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

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

Issue 1150863007: Remove many explicit references to AnalysisContextImpl and enable testing of the new task model (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Created 5 years, 6 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
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 77d23371e4ca2fdf532f2f0cb242a70495d31c56..22faa578a47dab9c671dd3e9ae69a613ab661f51 100644
--- a/pkg/analyzer/test/generated/resolver_test.dart
+++ b/pkg/analyzer/test/generated/resolver_test.dart
@@ -6,6 +6,7 @@ library engine.resolver_test;
import 'dart:collection';
+import 'package:analyzer/src/context/context.dart' as newContext;
import 'package:analyzer/src/generated/ast.dart';
import 'package:analyzer/src/generated/element.dart';
import 'package:analyzer/src/generated/element_resolver.dart';
@@ -75,23 +76,28 @@ class AnalysisContextFactory {
/**
* Create an analysis context that has a fake core library already resolved.
- *
- * @return the analysis context that was created
+ * Return the context that was created.
*/
- static AnalysisContextImpl contextWithCore() {
+ static InternalAnalysisContext contextWithCore() {
+ if (AnalysisEngine.instance.useTaskModel) {
+ NewAnalysisContextForTests context = new NewAnalysisContextForTests();
+ return initContextWithCore(context);
+ }
AnalysisContextForTests context = new AnalysisContextForTests();
return initContextWithCore(context);
}
/**
- * Create an analysis context that uses the given options and has a fake core library already
- * resolved.
- *
- * @param options the options to be applied to the context
- * @return the analysis context that was created
+ * Create an analysis context that uses the given [options] and has a fake
+ * core library already resolved. Return the context that was created.
*/
- static AnalysisContextImpl contextWithCoreAndOptions(
+ static InternalAnalysisContext contextWithCoreAndOptions(
AnalysisOptions options) {
+ if (AnalysisEngine.instance.useTaskModel) {
+ NewAnalysisContextForTests context = new NewAnalysisContextForTests();
+ context._internalSetAnalysisOptions(options);
+ return initContextWithCore(context);
+ }
AnalysisContextForTests context = new AnalysisContextForTests();
context._internalSetAnalysisOptions(options);
return initContextWithCore(context);
@@ -103,7 +109,8 @@ class AnalysisContextFactory {
* @param context the context to be initialized (not `null`)
* @return the analysis context that was created
*/
- static AnalysisContextImpl initContextWithCore(AnalysisContextImpl context) {
+ static InternalAnalysisContext initContextWithCore(
+ InternalAnalysisContext context) {
DirectoryBasedDartSdk sdk = new _AnalysisContextFactory_initContextWithCore(
new JavaFile("/fake/sdk"));
SourceFactory sourceFactory =
@@ -346,6 +353,26 @@ class AnalysisContextFactory {
context.recordLibraryElements(elementMap);
return context;
}
+
+ /**
+ * Create an analysis context that has a fake core library already resolved.
+ * Return the context that was created.
+ */
+ static AnalysisContextImpl oldContextWithCore() {
+ AnalysisContextForTests context = new AnalysisContextForTests();
+ return initContextWithCore(context);
+ }
+
+ /**
+ * Create an analysis context that uses the given [options] and has a fake
+ * core library already resolved. Return the context that was created.
+ */
+ static AnalysisContextImpl oldContextWithCoreAndOptions(
+ AnalysisOptions options) {
+ AnalysisContextForTests context = new AnalysisContextForTests();
+ context._internalSetAnalysisOptions(options);
+ return initContextWithCore(context);
+ }
}
/**
@@ -412,7 +439,7 @@ class AnalysisContextHelper {
AnalysisContext context;
/**
- * Creates new [AnalysisContext] using [AnalysisContextFactory.contextWithCore].
+ * Creates new [AnalysisContext] using [AnalysisContextFactory].
*/
AnalysisContextHelper([AnalysisOptionsImpl options]) {
if (options == null) {
@@ -1888,10 +1915,7 @@ class ElementResolverTest extends EngineTestCase {
* @return the resolver that was created
*/
ElementResolver _createResolver() {
- AnalysisContextImpl context = new AnalysisContextImpl();
- SourceFactory sourceFactory = new SourceFactory(
- [new DartUriResolver(DirectoryBasedDartSdk.defaultSdk)]);
- context.sourceFactory = sourceFactory;
+ InternalAnalysisContext context = AnalysisContextFactory.contextWithCore();
FileBasedSource source =
new FileBasedSource(FileUtilities2.createFile("/test.dart"));
CompilationUnitElementImpl definingCompilationUnit =
@@ -5709,7 +5733,7 @@ class InheritanceManagerTest extends EngineTestCase {
* @return the inheritance manager that was created
*/
InheritanceManager _createInheritanceManager() {
- AnalysisContextImpl context = AnalysisContextFactory.contextWithCore();
+ AnalysisContext context = AnalysisContextFactory.contextWithCore();
FileBasedSource source =
new FileBasedSource(FileUtilities2.createFile("/test.dart"));
CompilationUnitElementImpl definingCompilationUnit =
@@ -5727,7 +5751,7 @@ class LibraryElementBuilderTest extends EngineTestCase {
/**
* The analysis context used to analyze sources.
*/
- AnalysisContextImpl _context;
+ InternalAnalysisContext _context;
/**
* Add a source file to the content provider. The file path should be absolute.
@@ -5744,12 +5768,7 @@ class LibraryElementBuilderTest extends EngineTestCase {
@override
void setUp() {
- SourceFactory sourceFactory = new SourceFactory([
- new DartUriResolver(DirectoryBasedDartSdk.defaultSdk),
- new FileUriResolver()
- ]);
- _context = new AnalysisContextImpl();
- _context.sourceFactory = sourceFactory;
+ _context = AnalysisContextFactory.contextWithCore();
}
@override
@@ -5909,8 +5928,7 @@ class A {}''');
@reflectiveTest
class LibraryImportScopeTest extends ResolverTestCase {
void test_conflictingImports() {
- AnalysisContext context = new AnalysisContextImpl();
- context.sourceFactory = new SourceFactory([]);
+ AnalysisContext context = AnalysisContextFactory.contextWithCore();
String typeNameA = "A";
String typeNameB = "B";
String typeNameC = "C";
@@ -5976,8 +5994,7 @@ class LibraryImportScopeTest extends ResolverTestCase {
}
void test_creation_nonEmpty() {
- AnalysisContext context = new AnalysisContextImpl();
- context.sourceFactory = new SourceFactory([]);
+ AnalysisContext context = AnalysisContextFactory.contextWithCore();
String importedTypeName = "A";
ClassElement importedType =
new ClassElementImpl.forNode(AstFactory.identifier3(importedTypeName));
@@ -6028,8 +6045,7 @@ class LibraryImportScopeTest extends ResolverTestCase {
}
void test_nonConflictingImports_sameElement() {
- AnalysisContext context = new AnalysisContextImpl();
- context.sourceFactory = new SourceFactory([]);
+ AnalysisContext context = AnalysisContextFactory.contextWithCore();
String typeNameA = "A";
String typeNameB = "B";
ClassElement typeA = ElementFactory.classElement2(typeNameA);
@@ -6053,8 +6069,7 @@ class LibraryImportScopeTest extends ResolverTestCase {
}
void test_prefixedAndNonPrefixed() {
- AnalysisContext context = new AnalysisContextImpl();
- context.sourceFactory = new SourceFactory([]);
+ AnalysisContext context = AnalysisContextFactory.contextWithCore();
String typeName = "C";
String prefixName = "p";
ClassElement prefixedType = ElementFactory.classElement2(typeName);
@@ -6195,8 +6210,7 @@ class LibraryScopeTest extends ResolverTestCase {
}
void test_creation_nonEmpty() {
- AnalysisContext context = new AnalysisContextImpl();
- context.sourceFactory = new SourceFactory([]);
+ AnalysisContext context = AnalysisContextFactory.contextWithCore();
String importedTypeName = "A";
ClassElement importedType =
new ClassElementImpl.forNode(AstFactory.identifier3(importedTypeName));
@@ -6231,14 +6245,9 @@ class LibraryTest extends EngineTestCase {
GatheringErrorListener _errorListener;
/**
- * The source factory used to create libraries.
- */
- SourceFactory _sourceFactory;
-
- /**
* The analysis context to pass in to all libraries created by the tests.
*/
- AnalysisContextImpl _analysisContext;
+ InternalAnalysisContext _analysisContext;
/**
* The library used by the tests.
@@ -6247,9 +6256,7 @@ class LibraryTest extends EngineTestCase {
@override
void setUp() {
- _sourceFactory = new SourceFactory([new FileUriResolver()]);
- _analysisContext = new AnalysisContextImpl();
- _analysisContext.sourceFactory = _sourceFactory;
+ _analysisContext = AnalysisContextFactory.contextWithCore();
_errorListener = new GatheringErrorListener();
_library = _createLibrary("/lib.dart");
}
@@ -6257,7 +6264,6 @@ class LibraryTest extends EngineTestCase {
@override
void tearDown() {
_errorListener = null;
- _sourceFactory = null;
_analysisContext = null;
_library = null;
super.tearDown();
@@ -6381,6 +6387,63 @@ class MemberMapTest {
}
}
+/**
+ * An analysis context that has a fake SDK that is much smaller and faster for
+ * testing purposes.
+ */
+class NewAnalysisContextForTests extends newContext.AnalysisContextImpl {
+ @override
+ void set analysisOptions(AnalysisOptions options) {
+ AnalysisOptions currentOptions = analysisOptions;
+ bool needsRecompute = currentOptions.analyzeFunctionBodiesPredicate !=
+ options.analyzeFunctionBodiesPredicate ||
+ currentOptions.generateImplicitErrors !=
+ options.generateImplicitErrors ||
+ currentOptions.generateSdkErrors != options.generateSdkErrors ||
+ currentOptions.dart2jsHint != options.dart2jsHint ||
+ (currentOptions.hint && !options.hint) ||
+ currentOptions.preserveComments != options.preserveComments ||
+ currentOptions.enableNullAwareOperators !=
+ options.enableNullAwareOperators ||
+ currentOptions.enableStrictCallChecks != options.enableStrictCallChecks;
+ if (needsRecompute) {
+ fail(
+ "Cannot set options that cause the sources to be reanalyzed in a test context");
+ }
+ super.analysisOptions = options;
+ }
+
+ @override
+ bool exists(Source source) =>
+ super.exists(source) || sourceFactory.dartSdk.context.exists(source);
+
+ @override
+ TimestampedData<String> getContents(Source source) {
+ if (source.isInSystemLibrary) {
+ return sourceFactory.dartSdk.context.getContents(source);
+ }
+ return super.getContents(source);
+ }
+
+ @override
+ int getModificationStamp(Source source) {
+ if (source.isInSystemLibrary) {
+ return sourceFactory.dartSdk.context.getModificationStamp(source);
+ }
+ return super.getModificationStamp(source);
+ }
+
+ /**
+ * Set the analysis options, even if they would force re-analysis. This method should only be
+ * invoked before the fake SDK is initialized.
+ *
+ * @param options the analysis options to be set
+ */
+ void _internalSetAnalysisOptions(AnalysisOptions options) {
+ super.analysisOptions = options;
+ }
+}
+
@reflectiveTest
class NonHintCodeTest extends ResolverTestCase {
void test_deadCode_deadBlock_conditionalElse_debugConst() {
@@ -7661,7 +7724,7 @@ class ResolverTestCase extends EngineTestCase {
/**
* The analysis context used to parse the compilation units being resolved.
*/
- AnalysisContextImpl analysisContext2;
+ InternalAnalysisContext analysisContext2;
/**
* Specifies if [assertErrors] should check for [HintCode.UNUSED_ELEMENT] and
@@ -7771,7 +7834,7 @@ class ResolverTestCase extends EngineTestCase {
* @return the library element that was created
*/
LibraryElementImpl createDefaultTestLibrary() =>
- createTestLibrary(new AnalysisContextImpl(), "test");
+ createTestLibrary(AnalysisContextFactory.contextWithCore(), "test");
/**
* Create a library element that represents a library with the given name containing a single
@@ -10994,10 +11057,7 @@ class StaticTypeAnalyzerTest extends EngineTestCase {
* @return the analyzer to be used by the tests
*/
StaticTypeAnalyzer _createAnalyzer() {
- AnalysisContextImpl context = new AnalysisContextImpl();
- SourceFactory sourceFactory = new SourceFactory(
- [new DartUriResolver(DirectoryBasedDartSdk.defaultSdk)]);
- context.sourceFactory = sourceFactory;
+ InternalAnalysisContext context = AnalysisContextFactory.contextWithCore();
FileBasedSource source =
new FileBasedSource(FileUtilities2.createFile("/lib.dart"));
CompilationUnitElementImpl definingCompilationUnit =
@@ -11502,7 +11562,7 @@ class SubtypeManagerTest extends EngineTestCase {
@override
void setUp() {
super.setUp();
- AnalysisContextImpl context = AnalysisContextFactory.contextWithCore();
+ AnalysisContext context = AnalysisContextFactory.contextWithCore();
FileBasedSource source =
new FileBasedSource(FileUtilities2.createFile("/test.dart"));
_definingCompilationUnit = new CompilationUnitElementImpl("test.dart");
@@ -13210,7 +13270,7 @@ class TypeProviderImplTest extends EngineTestCase {
CompilationUnitElementImpl asyncUnit =
new CompilationUnitElementImpl("async.dart");
asyncUnit.types = <ClassElement>[futureType.element, streamType.element];
- AnalysisContextImpl context = new AnalysisContextImpl();
+ AnalysisContext context = AnalysisEngine.instance.createAnalysisContext();
LibraryElementImpl coreLibrary = new LibraryElementImpl.forNode(
context, AstFactory.libraryIdentifier2(["dart.core"]));
coreLibrary.definingCompilationUnit = coreUnit;
@@ -13333,9 +13393,7 @@ class TypeResolverVisitorTest extends EngineTestCase {
@override
void setUp() {
_listener = new GatheringErrorListener();
- SourceFactory factory = new SourceFactory([new FileUriResolver()]);
- AnalysisContextImpl context = new AnalysisContextImpl();
- context.sourceFactory = factory;
+ InternalAnalysisContext context = AnalysisContextFactory.contextWithCore();
Source librarySource =
new FileBasedSource(FileUtilities2.createFile("/lib.dart"));
_library = new Library(context, _listener, librarySource);
« no previous file with comments | « pkg/analyzer/test/generated/incremental_resolver_test.dart ('k') | pkg/analyzer/test/generated/test_support.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698