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

Unified Diff: pkg/analyzer/test/src/dart/analysis/driver_test.dart

Issue 2680883004: Resolve Library/Part/PartOf/Directive(s) in AST without tasks. (Closed)
Patch Set: Created 3 years, 10 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/src/dart/analysis/driver_test.dart
diff --git a/pkg/analyzer/test/src/dart/analysis/driver_test.dart b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
index 67764a3a9fda5ce4a4bb8401b9388853740443c0..809cbfdd22a64fd52a735b075dcbf94b1f2bf5a9 100644
--- a/pkg/analyzer/test/src/dart/analysis/driver_test.dart
+++ b/pkg/analyzer/test/src/dart/analysis/driver_test.dart
@@ -23,6 +23,7 @@ import 'package:analyzer/src/dart/constant/evaluation.dart';
import 'package:analyzer/src/dart/element/element.dart';
import 'package:analyzer/src/error/codes.dart';
import 'package:analyzer/src/generated/engine.dart' show AnalysisOptionsImpl;
+import 'package:analyzer/src/generated/resolver.dart' show ResolverErrorCode;
import 'package:analyzer/src/generated/sdk.dart';
import 'package:analyzer/src/generated/source.dart';
import 'package:analyzer/src/summary/idl.dart';
@@ -338,6 +339,155 @@ import 'a.dart';
expect(allResults[0].path, b);
}
+ test_analyze_resolveDirectives() async {
+ var lib = _p('/test/lib.dart');
+ var part1 = _p('/test/part1.dart');
+ var part2 = _p('/test/part2.dart');
+ provider.newFile(
+ lib,
+ '''
+library lib;
+part 'part1.dart';
+part 'part2.dart';
+''');
+ provider.newFile(
+ part1,
+ '''
+part of lib;
+''');
+ provider.newFile(
+ part2,
+ '''
+part of 'lib.dart';
+''');
+
+ AnalysisResult libResult = await driver.getResult(lib);
+ AnalysisResult partResult1 = await driver.getResult(part1);
+ AnalysisResult partResult2 = await driver.getResult(part2);
+
+ CompilationUnit libUnit = libResult.unit;
+ CompilationUnit partUnit1 = partResult1.unit;
+ CompilationUnit partUnit2 = partResult2.unit;
+
+ CompilationUnitElement unitElement = libUnit.element;
+ CompilationUnitElement partElement1 = partUnit1.element;
+ CompilationUnitElement partElement2 = partUnit2.element;
+
+ LibraryElement libraryElement = unitElement.library;
+ {
+ expect(libraryElement.entryPoint, isNull);
+ expect(libraryElement.source, unitElement.source);
+ expect(libraryElement.definingCompilationUnit, unitElement);
+ expect(libraryElement.parts, hasLength(2));
+ }
+
+ expect((libUnit.directives[0] as LibraryDirective).element, libraryElement);
+ expect((libUnit.directives[1] as PartDirective).element, partElement1);
+ expect((libUnit.directives[2] as PartDirective).element, partElement2);
+
+ {
+ var partOf = partUnit1.directives.single as PartOfDirective;
+ expect(partOf.element, libraryElement);
+ }
+
+ {
+ var partOf = partUnit2.directives.single as PartOfDirective;
+ expect(partOf.element, libraryElement);
+ }
+ }
+
+ test_analyze_resolveDirectives_error_missingLibraryDirective() async {
+ var lib = _p('/test/lib.dart');
+ var part = _p('/test/part.dart');
+ provider.newFile(
+ lib,
+ '''
+part 'part.dart';
+''');
+ provider.newFile(
+ part,
+ '''
+part of lib;
+''');
+
+ driver.addFile(lib);
+
+ AnalysisResult libResult = await driver.getResult(lib);
+ List<AnalysisError> errors = libResult.errors;
+ expect(errors, hasLength(1));
+ expect(errors[0].errorCode,
+ ResolverErrorCode.MISSING_LIBRARY_DIRECTIVE_WITH_PART);
+ }
+
+ test_analyze_resolveDirectives_error_partOfDifferentLibrary_byName() async {
+ var lib = _p('/test/lib.dart');
+ var part = _p('/test/part.dart');
+ provider.newFile(
+ lib,
+ '''
+library lib;
+part 'part.dart';
+''');
+ provider.newFile(
+ part,
+ '''
+part of someOtherLib;
+''');
+
+ driver.addFile(lib);
+
+ AnalysisResult libResult = await driver.getResult(lib);
+ List<AnalysisError> errors = libResult.errors;
+ expect(errors, hasLength(1));
+ expect(errors[0].errorCode, StaticWarningCode.PART_OF_DIFFERENT_LIBRARY);
+ }
+
+ test_analyze_resolveDirectives_error_partOfDifferentLibrary_byUri() async {
+ var lib = _p('/test/lib.dart');
+ var part = _p('/test/part.dart');
+ provider.newFile(
+ lib,
+ '''
+library lib;
+part 'part.dart';
+''');
+ provider.newFile(
+ part,
+ '''
+part of 'other_lib.dart';
+''');
+
+ driver.addFile(lib);
+
+ AnalysisResult libResult = await driver.getResult(lib);
+ List<AnalysisError> errors = libResult.errors;
+ expect(errors, hasLength(1));
+ expect(errors[0].errorCode, StaticWarningCode.PART_OF_DIFFERENT_LIBRARY);
+ }
+
+ test_analyze_resolveDirectives_error_partOfNonPart() async {
+ var lib = _p('/test/lib.dart');
+ var part = _p('/test/part.dart');
+ provider.newFile(
+ lib,
+ '''
+library lib;
+part 'part.dart';
+''');
+ provider.newFile(
+ part,
+ '''
+// no part of directive
+''');
+
+ driver.addFile(lib);
+
+ AnalysisResult libResult = await driver.getResult(lib);
+ List<AnalysisError> errors = libResult.errors;
+ expect(errors, hasLength(1));
+ expect(errors[0].errorCode, CompileTimeErrorCode.PART_OF_NON_PART);
+ }
+
test_cachedPriorityResults() async {
var a = _p('/test/bin/a.dart');
provider.newFile(a, 'var a = 1;');

Powered by Google App Engine
This is Rietveld 408576698