Skip to content

Commit e2e192f

Browse files
authored
Workarounds help dartdoc survive embedded SDKs and analysis option variance (#1385)
* Workarounds help dartdoc survive embedded SDKs and analysis option problems * dartfmt * extra comment
1 parent e2fc5d1 commit e2e192f

File tree

2 files changed

+25
-10
lines changed

2 files changed

+25
-10
lines changed

CHANGELOG.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
* added a new `--footer-text` command-line option, to allow adding additional
44
text in the package name and copyright section of the footer
55
* Reduced stack depth by not recomputing findCanonicalLibraryFor (#1381)
6+
* Workaround for (#1367) forces on enableAssertInitializer.
7+
* Work around analyzer-0.29 bug where embedded SDK uri's aren't properly
8+
reversed.
69

710
## 0.10.0
811

lib/dartdoc.dart

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import 'package:analyzer/dart/element/element.dart';
1212
import 'package:analyzer/error/error.dart';
1313
import 'package:analyzer/file_system/file_system.dart' as fileSystem;
1414
import 'package:analyzer/file_system/physical_file_system.dart';
15-
import 'package:analyzer/source/embedder.dart' show EmbedderUriResolver;
1615
import 'package:analyzer/source/package_map_resolver.dart';
1716
import 'package:analyzer/source/sdk_ext.dart';
1817
import 'package:analyzer/src/context/builder.dart';
@@ -193,22 +192,25 @@ class DartDoc {
193192
fileSystem.Folder cwd =
194193
PhysicalResourceProvider.INSTANCE.getResource(rootDir.path);
195194
Map<String, List<fileSystem.Folder>> packageMap = _calculatePackageMap(cwd);
196-
EmbedderUriResolver embedderUriResolver;
195+
196+
EmbedderSdk embedderSdk;
197+
DartUriResolver embedderResolver;
197198
if (packageMap != null) {
198199
resolvers.add(new SdkExtUriResolver(packageMap));
199200
resolvers.add(new PackageMapUriResolver(
200201
PhysicalResourceProvider.INSTANCE, packageMap));
201-
202202
var embedderYamls = new EmbedderYamlLocator(packageMap).embedderYamls;
203-
embedderUriResolver = new EmbedderUriResolver(embedderYamls);
204-
if (embedderUriResolver.length == 0) {
203+
embedderSdk =
204+
new EmbedderSdk(PhysicalResourceProvider.INSTANCE, embedderYamls);
205+
embedderResolver = new DartUriResolver(embedderSdk);
206+
if (embedderSdk.urlMappings.length == 0) {
205207
// The embedder uri resolver has no mappings. Use the default Dart SDK
206208
// uri resolver.
207209
resolvers.add(new DartUriResolver(sdk));
208210
} else {
209211
// The embedder uri resolver has mappings, use it instead of the default
210212
// Dart SDK uri resolver.
211-
resolvers.add(embedderUriResolver);
213+
resolvers.add(embedderResolver);
212214
}
213215
} else {
214216
resolvers.add(new DartUriResolver(sdk));
@@ -220,6 +222,7 @@ class DartDoc {
220222

221223
var options = new AnalysisOptionsImpl();
222224
options.enableGenericMethods = true;
225+
options.enableAssertInitializer = true;
223226

224227
AnalysisEngine.instance.processRequiredPlugins();
225228

@@ -243,9 +246,18 @@ class DartDoc {
243246
print('parsing ${name}...');
244247
JavaFile javaFile = new JavaFile(filePath).getAbsoluteFile();
245248
Source source = new FileBasedSource(javaFile);
246-
Uri uri = context.sourceFactory.restoreUri(source);
249+
250+
// TODO(jcollins-g): remove the manual reversal using embedderSdk when we
251+
// upgrade to analyzer-0.30 (where DartUriResolver implements
252+
// restoreAbsolute)
253+
Uri uri = embedderSdk?.fromFileUri(source.uri)?.uri;
247254
if (uri != null) {
248255
source = new FileBasedSource(javaFile, uri);
256+
} else {
257+
uri = context.sourceFactory.restoreUri(source);
258+
if (uri != null) {
259+
source = new FileBasedSource(javaFile, uri);
260+
}
249261
}
250262
sources.add(source);
251263
if (context.computeKindOf(source) == SourceKind.LIBRARY) {
@@ -256,9 +268,9 @@ class DartDoc {
256268

257269
files.forEach(processLibrary);
258270

259-
if ((embedderUriResolver != null) && (embedderUriResolver.length > 0)) {
260-
embedderUriResolver.dartSdk.uris.forEach((String dartUri) {
261-
Source source = embedderUriResolver.dartSdk.mapDartUri(dartUri);
271+
if ((embedderSdk != null) && (embedderSdk.urlMappings.length > 0)) {
272+
embedderSdk.urlMappings.keys.forEach((String dartUri) {
273+
Source source = embedderSdk.mapDartUri(dartUri);
262274
processLibrary(source.fullName);
263275
});
264276
}

0 commit comments

Comments
 (0)