fix crossdart linking and add test (#1255)
diff --git a/lib/src/model.dart b/lib/src/model.dart
index a6e2d27..1a780cf 100644
--- a/lib/src/model.dart
+++ b/lib/src/model.dart
@@ -14,7 +14,6 @@
import 'package:analyzer/dart/element/type.dart';
import 'package:analyzer/src/generated/resolver.dart'
show Namespace, NamespaceBuilder, InheritanceManager, MemberMap;
-import 'package:analyzer/src/generated/source_io.dart';
import 'package:analyzer/src/generated/utilities_dart.dart' show ParameterKind;
import 'package:collection/collection.dart';
import 'package:path/path.dart' as p;
@@ -773,14 +772,14 @@
}
@override
- String get oneLineDoc => documentationAsHtml;
-
- @override
String get href =>
'${library.dirName}/${(enclosingElement as Class).fileName}';
@override
String get linkedName => name;
+
+ @override
+ String get oneLineDoc => documentationAsHtml;
}
class Field extends ModelElement
@@ -2081,8 +2080,8 @@
String get _crossdartPath {
var node = element.computeNode();
if (node is Declaration && node.element != null) {
- var source = (node.element.source as FileBasedSource);
- var file = source.file.toString();
+ var source = node.element.source;
+ var filePath = source.fullName;
var uri = source.uri.toString();
var packageMeta = library.package.packageMeta;
if (uri.startsWith("package:")) {
@@ -2095,7 +2094,7 @@
} else {
var match = new RegExp(
".pub-cache/(hosted/pub.dartlang.org|git)/${packageName}-([^/]+)")
- .firstMatch(file);
+ .firstMatch(filePath);
if (match != null) {
packageVersion = match[2];
}
diff --git a/test/compare_output_test.dart b/test/compare_output_test.dart
index 46439fb..90eed83 100644
--- a/test/compare_output_test.dart
+++ b/test/compare_output_test.dart
@@ -144,6 +144,26 @@
fail('Did not process @example in comments');
}
});
+
+ test('Check dartdoc generation with crossdart', () {
+ var args = <String>[
+ dartdocBin,
+ '--add-crossdart',
+ '--output',
+ tempDir.path
+ ];
+
+ var result = Process.runSync(Platform.resolvedExecutable, args,
+ workingDirectory: _testPackagePath);
+
+ if (result.exitCode != 0) {
+ print(result.exitCode);
+ print(result.stdout);
+ print(result.stderr);
+ fail('dartdoc failed');
+ }
+
+ });
}, onPlatform: {'windows': new Skip('Avoiding parsing git output')});
}
diff --git a/tool/doc_packages.dart b/tool/doc_packages.dart
index b312ab1..0bc9254 100644
--- a/tool/doc_packages.dart
+++ b/tool/doc_packages.dart
@@ -129,7 +129,7 @@
}
Future<List<PackageInfo>> _getPackageInfos(List<String> packageUrls) {
- List<Future> futures = packageUrls.map((String p) {
+ var futures = packageUrls.map((String p) {
return http.get(p).then((response) {
var json = JSON.decode(response.body);
String name = json['name'];