Skip to content

Commit a191c89

Browse files
committed
refactor(dart/analyzer plugin): update to latest version of plugins
Closes angular#3681
1 parent 5725f71 commit a191c89

File tree

7 files changed

+59
-79
lines changed

7 files changed

+59
-79
lines changed

modules/angular2/pubspec.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ homepage: <%= packageJson.homepage %>
99
environment:
1010
sdk: '>=1.10.0 <2.0.0'
1111
dependencies:
12-
analyzer: '>=0.24.4 <0.26.0'
12+
analyzer: '>=0.24.4 <0.27.0'
1313
barback: '^0.15.2+2'
1414
code_transformers: '^0.2.8'
1515
dart_style: '>=0.1.8 <0.3.0'

modules_dart/analyzer_plugin/lib/plugin.dart

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
11
library angular2.src.analysis.analyzer_plugin;
22

3-
import 'package:analyzer/plugin/plugin.dart';
3+
import 'package:plugin/plugin.dart';
44
import 'package:analyzer/plugin/task.dart';
55
import 'src/tasks.dart';
66

77
/// Contribute a plugin to the dart analyzer for analysis of
88
/// Angular 2 dart code.
99
class AngularAnalyzerPlugin implements Plugin {
10-
1110
/// The unique identifier for this plugin.
1211
static const String UNIQUE_IDENTIFIER = 'angular2.analysis';
1312

modules_dart/analyzer_plugin/lib/src/tasks.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import 'package:analyzer/task/model.dart';
88
import 'package:angular2/src/render/api.dart';
99
import 'package:angular2/src/transform/common/directive_metadata_reader.dart';
1010

11+
1112
/// The [RenderDirectiveMetadata]s of a [LibrarySpecificUnit].
1213
final ListResultDescriptor<RenderDirectiveMetadata> DIRECTIVES =
1314
new ListResultDescriptor<RenderDirectiveMetadata>('ANGULAR2_DIRECTIVES', null);
@@ -29,6 +30,7 @@ class BuildUnitDirectivesTask extends SourceBasedAnalysisTask {
2930
@override
3031
void internalPerform() {
3132
CompilationUnit unit = getRequiredInput(UNIT_INPUT);
33+
3234
List<RenderDirectiveMetadata> metaList = <RenderDirectiveMetadata>[];
3335
for (CompilationUnitMember unitMember in unit.declarations) {
3436
if (unitMember is ClassDeclaration) {

modules_dart/analyzer_plugin/lib/tasks.dart

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,5 +5,6 @@ import 'package:analyzer/task/model.dart';
55

66
/// The analysis errors associated with a target.
77
/// The value combines errors represented by multiple other results.
8-
final CompositeResultDescriptor<List<AnalysisError>> HTML_ERRORS =
9-
new CompositeResultDescriptor<List<AnalysisError>>('ANGULAR_HTML_ERRORS');
8+
final ListResultDescriptor<AnalysisError> HTML_ERRORS =
9+
new ListResultDescriptor<AnalysisError>(
10+
'ANGULAR_HTML_ERRORS', AnalysisError.NO_ERRORS);

modules_dart/analyzer_plugin/pubspec.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ environment:
55
sdk: '>=1.9.0 <2.0.0'
66
dependencies:
77
angular2: '0.0.0'
8-
analyzer: '^0.24.4'
8+
analyzer: '>=0.25.1 <0.27.0'
9+
plugin: "^0.1.0"
910
dev_dependencies:
1011
test_reflective_loader: '^0.0.3'
1112
typed_mock: '^0.0.4'

modules_dart/analyzer_plugin/test/mock_sdk.dart

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@ library test.src.mock_sdk;
22

33
import 'package:analyzer/file_system/file_system.dart' as resource;
44
import 'package:analyzer/file_system/memory_file_system.dart' as resource;
5-
import 'package:analyzer/src/generated/engine.dart';
5+
import 'package:analyzer/src/context/cache.dart';
6+
import 'package:analyzer/src/context/context.dart';
7+
import 'package:analyzer/src/generated/engine.dart'
8+
show AnalysisEngine, ChangeSet;
69
import 'package:analyzer/src/generated/sdk.dart';
710
import 'package:analyzer/src/generated/source.dart';
811

@@ -173,7 +176,7 @@ class HtmlElement {}
173176
/**
174177
* The [AnalysisContext] which is used for all of the sources.
175178
*/
176-
InternalAnalysisContext _analysisContext;
179+
AnalysisContextImpl _analysisContext;
177180

178181
MockSdk() {
179182
LIBRARIES.forEach((_MockSdkLibrary library) {
@@ -182,9 +185,9 @@ class HtmlElement {}
182185
}
183186

184187
@override
185-
AnalysisContext get context {
188+
AnalysisContextImpl get context {
186189
if (_analysisContext == null) {
187-
_analysisContext = new SdkAnalysisContext();
190+
_analysisContext = new _SdkAnalysisContext(this);
188191
SourceFactory factory = new SourceFactory([new DartUriResolver(this)]);
189192
_analysisContext.sourceFactory = factory;
190193
ChangeSet changeSet = new ChangeSet();
@@ -309,3 +312,22 @@ class _MockSdkLibrary implements SdkLibrary {
309312

310313
UnimplementedError get unimplemented => new UnimplementedError();
311314
}
315+
316+
/**
317+
* An [AnalysisContextImpl] that only contains sources for a Dart SDK.
318+
*/
319+
class _SdkAnalysisContext extends AnalysisContextImpl {
320+
final DartSdk sdk;
321+
322+
_SdkAnalysisContext(this.sdk);
323+
324+
@override
325+
AnalysisCache createCacheFromSourceFactory(SourceFactory factory) {
326+
if (factory == null) {
327+
return super.createCacheFromSourceFactory(factory);
328+
}
329+
return new AnalysisCache(<CachePartition>[
330+
AnalysisEngine.instance.partitionManager_new.forSdk(sdk)
331+
]);
332+
}
333+
}

modules_dart/analyzer_plugin/test/tasks_test.server.spec.dart

Lines changed: 24 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,17 @@ library angular2.src.analysis.analyzer_plugin.src.tasks_test;
33
import 'package:analyzer/file_system/file_system.dart';
44
import 'package:analyzer/file_system/memory_file_system.dart';
55
import 'package:analyzer/src/context/cache.dart';
6+
import 'package:analyzer/src/context/context.dart';
67
import 'package:analyzer/src/generated/engine.dart'
7-
show AnalysisOptionsImpl, TimestampedData;
8-
import 'package:analyzer/src/generated/resolver.dart';
8+
show AnalysisOptionsImpl, TimestampedData, AnalysisEngine;
99
import 'package:analyzer/src/generated/sdk.dart';
1010
import 'package:analyzer/src/generated/source.dart';
11-
import 'package:analyzer/src/task/dart.dart';
1211
import 'package:analyzer/src/task/driver.dart';
13-
import 'package:analyzer/src/task/general.dart';
14-
import 'package:analyzer/src/task/manager.dart';
1512
import 'package:analyzer/task/dart.dart';
1613
import 'package:analyzer/task/model.dart';
1714
import 'package:angular2/src/render/api.dart';
1815
import 'package:angular2_analyzer_plugin/src/tasks.dart';
1916
import 'package:test_reflective_loader/test_reflective_loader.dart';
20-
import 'package:typed_mock/typed_mock.dart';
2117
import 'package:unittest/unittest.dart';
2218

2319
import 'mock_sdk.dart';
@@ -33,16 +29,17 @@ class BuildUnitDirectivesTaskTest extends _AbstractDartTaskTest {
3329

3430
void test_Component() {
3531
_addAngularSources();
32+
3633
Source source = _newSource('/test.dart', r'''
37-
import '/angular2/metadata.dart';
34+
import '/angular2/metadata.dart';
3835
39-
@Component(selector: 'comp-a')
40-
class ComponentA {
41-
}
36+
@Component(selector: 'comp-a')
37+
class ComponentA {
38+
}
4239
43-
@Component(selector: 'comp-b')
44-
class ComponentB {
45-
}
40+
@Component(selector: 'comp-b')
41+
class ComponentB {
42+
}
4643
''');
4744
LibrarySpecificUnit target = new LibrarySpecificUnit(source, source);
4845
_computeResult(target, DIRECTIVES);
@@ -56,7 +53,9 @@ class ComponentB {
5653

5754
void test_Directive() {
5855
_addAngularSources();
56+
5957
Source source = _newSource('/test.dart', r'''
58+
6059
import '/angular2/metadata.dart';
6160
6261
@Directive(selector: 'deco-a')
@@ -78,7 +77,10 @@ class ComponentB {
7877
}
7978

8079
void _addAngularSources() {
80+
81+
8182
_newSource('/angular2/metadata.dart', r'''
83+
8284
library angular2.src.core.metadata;
8385
8486
abstract class Directive {
@@ -118,54 +120,31 @@ class _AbstractDartTaskTest {
118120
Source emptySource;
119121

120122
DartSdk sdk = new MockSdk();
121-
_MockContext context = new _MockContext();
123+
AnalysisContextImpl context;
122124
Map<AnalysisTarget, CacheEntry> entryMap = <AnalysisTarget, CacheEntry>{};
123125

124-
TaskManager taskManager = new TaskManager();
125126
AnalysisDriver analysisDriver;
126127

127128
AnalysisTask task;
128129
Map<ResultDescriptor<dynamic>, dynamic> outputs;
129130

130131
CacheEntry getCacheEntry(AnalysisTarget target) {
131-
return entryMap.putIfAbsent(target, () => new CacheEntry());
132+
return entryMap.putIfAbsent(target, () => new CacheEntry(target));
132133
}
133134

134135
void setUp() {
135136
emptySource = _newSource('/test.dart');
136-
// prepare AnalysisContext
137+
AnalysisEngine.instance.useTaskModel = true;
138+
context = new AnalysisContextImpl();
139+
137140
context.sourceFactory = new SourceFactory(<UriResolver>[
138141
new DartUriResolver(sdk),
139142
new ResourceUriResolver(resourceProvider)
140143
]);
141-
// prepare TaskManager
142-
taskManager.addTaskDescriptor(GetContentTask.DESCRIPTOR);
143-
// TODO(scheglov) extract into API
144-
taskManager.addTaskDescriptor(ScanDartTask.DESCRIPTOR);
145-
taskManager.addTaskDescriptor(ParseDartTask.DESCRIPTOR);
146-
taskManager.addTaskDescriptor(BuildClassConstructorsTask.DESCRIPTOR);
147-
taskManager.addTaskDescriptor(BuildCompilationUnitElementTask.DESCRIPTOR);
148-
taskManager.addTaskDescriptor(BuildLibraryConstructorsTask.DESCRIPTOR);
149-
taskManager.addTaskDescriptor(BuildLibraryElementTask.DESCRIPTOR);
150-
taskManager.addTaskDescriptor(BuildPublicNamespaceTask.DESCRIPTOR);
151-
taskManager.addTaskDescriptor(BuildDirectiveElementsTask.DESCRIPTOR);
152-
taskManager.addTaskDescriptor(BuildSourceClosuresTask.DESCRIPTOR);
153-
taskManager.addTaskDescriptor(BuildExportNamespaceTask.DESCRIPTOR);
154-
taskManager.addTaskDescriptor(BuildEnumMemberElementsTask.DESCRIPTOR);
155-
taskManager.addTaskDescriptor(BuildFunctionTypeAliasesTask.DESCRIPTOR);
156-
taskManager.addTaskDescriptor(BuildTypeProviderTask.DESCRIPTOR);
157-
taskManager.addTaskDescriptor(GatherUsedImportedElementsTask.DESCRIPTOR);
158-
taskManager.addTaskDescriptor(GatherUsedLocalElementsTask.DESCRIPTOR);
159-
taskManager.addTaskDescriptor(GenerateHintsTask.DESCRIPTOR);
160-
taskManager.addTaskDescriptor(ResolveUnitTypeNamesTask.DESCRIPTOR);
161-
taskManager.addTaskDescriptor(ResolveLibraryTypeNamesTask.DESCRIPTOR);
162-
taskManager.addTaskDescriptor(ResolveReferencesTask.DESCRIPTOR);
163-
taskManager.addTaskDescriptor(ResolveVariableReferencesTask.DESCRIPTOR);
164-
taskManager.addTaskDescriptor(VerifyUnitTask.DESCRIPTOR);
165-
// Angular specific tasks
166-
taskManager.addTaskDescriptor(BuildUnitDirectivesTask.DESCRIPTOR);
167-
// prepare AnalysisDriver
168-
analysisDriver = new AnalysisDriver(taskManager, context);
144+
145+
analysisDriver = context.driver;
146+
analysisDriver.taskManager
147+
.addTaskDescriptor(BuildUnitDirectivesTask.DESCRIPTOR);
169148
}
170149

171150
void _computeResult(AnalysisTarget target, ResultDescriptor result) {
@@ -179,27 +158,3 @@ class _AbstractDartTaskTest {
179158
return file.createSource();
180159
}
181160
}
182-
183-
class _MockContext extends TypedMock implements ExtendedAnalysisContext {
184-
AnalysisOptionsImpl analysisOptions = new AnalysisOptionsImpl();
185-
SourceFactory sourceFactory;
186-
TypeProvider typeProvider;
187-
188-
Map<AnalysisTarget, CacheEntry> entryMap = <AnalysisTarget, CacheEntry>{};
189-
190-
String get name => '_MockContext';
191-
192-
bool exists(Source source) => source.exists();
193-
194-
@override
195-
CacheEntry getCacheEntry(AnalysisTarget target) {
196-
return entryMap.putIfAbsent(target, () => new CacheEntry());
197-
}
198-
199-
TimestampedData<String> getContents(Source source) => source.contents;
200-
201-
noSuchMethod(Invocation invocation) {
202-
print('noSuchMethod: ${invocation.memberName}');
203-
return super.noSuchMethod(invocation);
204-
}
205-
}

0 commit comments

Comments
 (0)