Skip to content

Commit 9de0f86

Browse files
committed
Tests work, even if flutter doesn't
1 parent 86c2ad4 commit 9de0f86

File tree

216 files changed

+2047
-1200
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

216 files changed

+2047
-1200
lines changed

lib/src/html/templates.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ const _partials = const <String>[
2828
'sidebar_for_enum',
2929
'source_code',
3030
'sidebar_for_library',
31+
'accessor_getter',
32+
'accessor_setter',
3133
];
3234

3335
Future<Map<String, String>> _loadPartials(List<String> headerPaths,

lib/src/model.dart

Lines changed: 88 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -244,6 +244,13 @@ class InheritableAccessor extends Accessor with Inheritable {
244244
}
245245
return _enclosingElement;
246246
}
247+
248+
@override
249+
Set<String> get features {
250+
Set<String> all_features = super.features;
251+
if (isInherited) all_features.add('inherited');
252+
return all_features;
253+
}
247254
}
248255

249256
/// Getters and setters.
@@ -279,10 +286,49 @@ class Accessor extends ModelElement
279286
_enclosingCombo = combo;
280287
}
281288

289+
bool get isSynthetic => element.isSynthetic;
290+
291+
@override
292+
String get sourceCode {
293+
if (_sourceCodeCache == null) {
294+
if (isSynthetic) {
295+
_sourceCodeCache =
296+
sourceCodeFor((element as PropertyAccessorElement).variable);
297+
} else {
298+
_sourceCodeCache = super.sourceCode;
299+
}
300+
}
301+
return _sourceCodeCache;
302+
}
303+
304+
@override
305+
List<ModelElement> get computeDocumentationFrom {
306+
if (isSynthetic) return [this];
307+
return super.computeDocumentationFrom;
308+
}
309+
282310
@override
283311
String get computeDocumentationComment {
284-
if (element.isSynthetic) {
285-
return (element as PropertyAccessorElement).variable.documentationComment;
312+
if (isSynthetic) {
313+
String docComment = new ModelElement.fromElement(
314+
(element as PropertyAccessorElement).variable, package)
315+
.element
316+
.documentationComment;
317+
// If we're a setter, only display something if we have something different than the getter.
318+
// TODO(jcollins-g): modify analyzer to do this itself?
319+
if (isGetter ||
320+
// TODO(jcollins-g): @nodoc reading from comments is at the wrong abstraction level here.
321+
(docComment != null &&
322+
(docComment.contains('<nodoc>') ||
323+
docComment.contains('@nodoc'))) ||
324+
(isSetter &&
325+
enclosingCombo.hasGetter &&
326+
enclosingCombo.getter.computeDocumentationComment !=
327+
docComment)) {
328+
return stripComments(docComment);
329+
} else {
330+
return '';
331+
}
286332
}
287333
return stripComments(super.computeDocumentationComment);
288334
}
@@ -326,6 +372,7 @@ class Accessor extends ModelElement
326372
}
327373

328374
bool get isGetter => _accessor.isGetter;
375+
bool get isSetter => _accessor.isSetter;
329376

330377
bool _overriddenElementIsSet = false;
331378
ModelElement _overriddenElement;
@@ -1359,6 +1406,8 @@ class Field extends ModelElement
13591406
..addAll([hasPublicSetter, hasPublicGetterNoSetter]);
13601407
assert(assertCheck.containsAll([true, false]));
13611408
}
1409+
documentationFrom;
1410+
if (name == 'implicitGetterExplicitSetter') 1 + 1;
13621411
return super.documentation;
13631412
}
13641413

@@ -1421,13 +1470,11 @@ class Field extends ModelElement
14211470

14221471
@override
14231472
Set<String> get features {
1424-
Set<String> all_features = super.features;
1425-
all_features.addAll(annotations);
1426-
1427-
/// final/const implies read-only, so don't display both strings.
1428-
if (readOnly && !isFinal && !isConst) all_features.add('read-only');
1429-
if (writeOnly) all_features.add('write-only');
1430-
if (readWrite) all_features.add('read / write');
1473+
if (name == 'implicitGetterExplicitSetter' &&
1474+
enclosingElement.name == 'ClassWithUnusualProperties') {
1475+
1 + 1;
1476+
}
1477+
Set<String> all_features = super.features..addAll(comboFeatures);
14311478
if (hasPublicGetter && hasPublicSetter) {
14321479
if (getter.isInherited && setter.isInherited) {
14331480
all_features.add('inherited');
@@ -1489,6 +1536,16 @@ class Field extends ModelElement
14891536
abstract class GetterSetterCombo implements ModelElement {
14901537
Accessor get getter;
14911538

1539+
Set<String> get comboFeatures {
1540+
Set<String> all_features = new Set();
1541+
if (hasExplicitGetter) all_features.addAll(getter.features);
1542+
if (hasExplicitSetter) all_features.addAll(setter.features);
1543+
if (readOnly && !isFinal && !isConst) all_features.add('read-only');
1544+
if (writeOnly) all_features.add('write-only');
1545+
if (readWrite) all_features.add('read / write');
1546+
return all_features;
1547+
}
1548+
14921549
@override
14931550
ModelElement enclosingElement;
14941551
bool get isInherited;
@@ -1519,8 +1576,8 @@ abstract class GetterSetterCombo implements ModelElement {
15191576

15201577
/// Returns true if both accessors are synthetic.
15211578
bool get hasSyntheticAccessors {
1522-
if ((hasPublicGetter && getter.element.isSynthetic) ||
1523-
(hasPublicSetter && setter.element.isSynthetic)) {
1579+
if ((hasPublicGetter && getter.isSynthetic) ||
1580+
(hasPublicSetter && setter.isSynthetic)) {
15241581
return true;
15251582
}
15261583
return false;
@@ -1537,36 +1594,32 @@ abstract class GetterSetterCombo implements ModelElement {
15371594
if (_documentationFrom == null) {
15381595
_documentationFrom = [];
15391596
if (hasPublicGetter) {
1540-
_documentationFrom.addAll(getter.documentationFrom.where((e) =>
1541-
e.computeDocumentationComment != computeDocumentationComment));
1597+
_documentationFrom.addAll(getter.documentationFrom);
1598+
} else if (hasPublicSetter) {
1599+
_documentationFrom.addAll(setter.documentationFrom);
15421600
}
1543-
if (hasPublicSetter)
1544-
_documentationFrom.addAll(setter.documentationFrom.where((e) =>
1545-
e.computeDocumentationComment != computeDocumentationComment));
15461601
if (_documentationFrom.length == 0 ||
15471602
_documentationFrom.every((e) => e.documentation == ''))
15481603
_documentationFrom = computeDocumentationFrom;
15491604
}
15501605
return _documentationFrom;
15511606
}
15521607

1608+
bool get hasAccessorsWithDocs =>
1609+
(hasPublicGetter && getter.documentation.isNotEmpty ||
1610+
hasPublicSetter && setter.documentation.isNotEmpty);
1611+
bool get getterSetterBothAvailable => (hasPublicGetter &&
1612+
getter.documentation.isNotEmpty &&
1613+
hasPublicSetter &&
1614+
setter.documentation.isNotEmpty);
1615+
15531616
@override
15541617
String get oneLineDoc {
15551618
if (_oneLineDoc == null) {
1556-
bool hasAccessorsWithDocs =
1557-
(hasPublicGetter && getter.oneLineDoc.isNotEmpty ||
1558-
hasPublicSetter && setter.oneLineDoc.isNotEmpty);
15591619
if (!hasAccessorsWithDocs) {
15601620
_oneLineDoc = _documentation.asOneLiner;
15611621
} else {
15621622
StringBuffer buffer = new StringBuffer();
1563-
bool getterSetterBothAvailable = false;
1564-
if (hasPublicGetter &&
1565-
getter.oneLineDoc.isNotEmpty &&
1566-
hasPublicSetter &&
1567-
setter.oneLineDoc.isNotEmpty) {
1568-
getterSetterBothAvailable = true;
1569-
}
15701623
if (hasPublicGetter && getter.oneLineDoc.isNotEmpty) {
15711624
buffer.write('${getter.oneLineDoc}');
15721625
}
@@ -1582,7 +1635,7 @@ abstract class GetterSetterCombo implements ModelElement {
15821635
String get getterSetterDocumentationComment {
15831636
var buffer = new StringBuffer();
15841637

1585-
if (hasPublicGetter && !getter.element.isSynthetic) {
1638+
if (hasPublicGetter && !getter.isSynthetic) {
15861639
assert(getter.documentationFrom.length == 1);
15871640
// We have to check against dropTextFrom here since documentationFrom
15881641
// doesn't yield the real elements for GetterSetterCombos.
@@ -1594,7 +1647,7 @@ abstract class GetterSetterCombo implements ModelElement {
15941647
}
15951648
}
15961649

1597-
if (hasPublicSetter && !setter.element.isSynthetic) {
1650+
if (hasPublicSetter && !setter.isSynthetic) {
15981651
assert(setter.documentationFrom.length == 1);
15991652
if (!config.dropTextFrom
16001653
.contains(setter.documentationFrom.first.element.library.name)) {
@@ -1629,14 +1682,16 @@ abstract class GetterSetterCombo implements ModelElement {
16291682
return null;
16301683
}
16311684

1632-
bool get hasExplicitGetter => hasPublicGetter && !getter.element.isSynthetic;
1685+
bool get hasExplicitGetter => hasPublicGetter && !getter.isSynthetic;
16331686

1634-
bool get hasExplicitSetter => hasPublicSetter && !setter.element.isSynthetic;
1635-
bool get hasImplicitSetter => hasPublicSetter && setter.element.isSynthetic;
1687+
bool get hasExplicitSetter => hasPublicSetter && !setter.isSynthetic;
1688+
bool get hasImplicitSetter => hasPublicSetter && setter.isSynthetic;
1689+
bool get hasImplicitGetter => hasPublicGetter && getter.isSynthetic;
16361690

16371691
bool get hasGetter => getter != null;
16381692

1639-
bool get hasNoGetterSetter => !hasExplicitGetter && !hasExplicitSetter;
1693+
bool get hasNoGetterSetter => !hasGetterOrSetter;
1694+
bool get hasGetterOrSetter => hasExplicitGetter || hasExplicitSetter;
16401695

16411696
bool get hasSetter => setter != null;
16421697

@@ -4714,15 +4769,7 @@ class TopLevelVariable extends ModelElement
47144769
String get kind => 'top-level property';
47154770

47164771
@override
4717-
Set<String> get features {
4718-
Set<String> all_features = super.features;
4719-
4720-
/// final/const implies read-only, so don't display both strings.
4721-
if (readOnly && !isFinal && !isConst) all_features.add('read-only');
4722-
if (writeOnly) all_features.add('write-only');
4723-
if (readWrite) all_features.add('read / write');
4724-
return all_features;
4725-
}
4772+
Set<String> get features => super.features..addAll(comboFeatures);
47264773

47274774
@override
47284775
String get computeDocumentationComment {

lib/templates/_accessor_getter.html

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{{#getter}}
2+
<section id="getter">
3+
4+
<section class="multi-line-signature">
5+
<span class="returntype">{{{ linkedReturnType }}}</span>
6+
{{>name_summary}}
7+
{{>features}}
8+
</section>
9+
10+
{{>documentation}}
11+
{{>source_code}}
12+
</section>
13+
{{/getter}}

lib/templates/_accessor_setter.html

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
{{#setter}}
2+
<section id="setter">
3+
4+
<section class="multi-line-signature">
5+
<span class="returntype">void</span>
6+
{{>name_summary}}<span class="signature">(<wbr>{{{ linkedParamsNoMetadata }}})</span>
7+
{{>features}}
8+
</section>
9+
10+
{{>documentation}}
11+
{{>source_code}}
12+
</section>
13+
{{/setter}}

lib/templates/property.html

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,26 @@ <h5>{{parent.kind}} {{parent.name}}</h5>
66
</div><!--/.sidebar-offcanvas-->
77

88
<div class="col-xs-12 col-sm-9 col-md-8 main-content">
9-
109
{{#self}}
11-
<section class="multi-line-signature">
12-
<span class="returntype">{{{ linkedReturnType }}}</span>
13-
{{>name_summary}}
14-
{{>features}}
15-
</section>
10+
{{#hasNoGetterSetter}}
11+
<section class="multi-line-signature">
12+
<span class="returntype">{{{ linkedReturnType }}}</span>
13+
{{>name_summary}}
14+
{{>features}}
15+
</section>
16+
{{>documentation}}
17+
{{>source_code}}
18+
{{/hasNoGetterSetter}}
19+
20+
{{#hasGetterOrSetter}}
21+
{{#hasGetter}}
22+
{{>accessor_getter}}
23+
{{/hasGetter}}
1624

17-
{{>documentation}}
18-
{{>source_code}}
25+
{{#hasSetter}}
26+
{{>accessor_setter}}
27+
{{/hasSetter}}
28+
{{/hasGetterOrSetter}}
1929
{{/self}}
2030
</div> <!-- /.main-content -->
2131

lib/templates/top_level_property.html

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,29 @@ <h5>{{parent.kind}} {{parent.name}}</h5>
66
</div><!--/.sidebar-offcanvas-left-->
77

88
<div class="col-xs-12 col-sm-9 col-md-8 main-content">
9-
109
{{#self}}
10+
{{#hasNoGetterSetter}}
1111
<section class="multi-line-signature">
1212
<span class="returntype">{{{ linkedReturnType }}}</span>
1313
{{>name_summary}}
1414
{{>features}}
1515
</section>
16-
1716
{{>documentation}}
1817
{{>source_code}}
19-
{{/self}}
18+
{{/hasNoGetterSetter}}
2019

20+
{{#hasExplicitGetter}}
21+
{{>accessor_getter}}
22+
{{/hasExplicitGetter}}
23+
24+
{{#hasExplicitSetter}}
25+
{{>accessor_setter}}
26+
{{/hasExplicitSetter}}
27+
{{/self}}
2128
</div> <!-- /.main-content -->
2229

2330
<div class="col-xs-6 col-sm-6 col-md-2 sidebar sidebar-offcanvas-right">
2431
<h5>{{self.kind}} {{self.name}}</h5>
2532
</div><!--/.sidebar-offcanvas-->
2633

27-
{{>footer}}
34+
{{>footer}}

pubspec.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -350,4 +350,4 @@ packages:
350350
source: hosted
351351
version: "2.1.13"
352352
sdks:
353-
dart: ">=1.23.0 <=2.0.0-dev.6.0"
353+
dart: ">=1.23.0 <=2.0.0-dev.7.0"

0 commit comments

Comments
 (0)