Skip to content

Test FutureOr with strong mode. #1615

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 11 commits into from
Feb 26, 2018
41 changes: 39 additions & 2 deletions test/model_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ library dartdoc.model_test;

import 'dart:io';

import 'package:analyzer/dart/element/element.dart';
import 'package:dartdoc/dartdoc.dart';
import 'package:dartdoc/src/model.dart';
import 'package:dartdoc/src/warnings.dart';
Expand Down Expand Up @@ -1048,18 +1047,33 @@ void main() {
group('Function', () {
ModelFunction f1;
ModelFunction genericFunction;
ModelFunction paramOfFutureOrNull;
ModelFunction thisIsAsync;
ModelFunction thisIsFutureOr;
ModelFunction thisIsFutureOrNull;
ModelFunction thisIsFutureOrT;
ModelFunction topLevelFunction;
ModelFunction typeParamOfFutureOr;

setUp(() {
f1 = exLibrary.functions.first;
genericFunction =
exLibrary.functions.firstWhere((f) => f.name == 'genericFunction');
paramOfFutureOrNull =
fakeLibrary.functions.firstWhere((f) => f.name == 'paramOfFutureOrNull');
thisIsAsync =
fakeLibrary.functions.firstWhere((f) => f.name == 'thisIsAsync');
thisIsFutureOr =
fakeLibrary.functions.firstWhere((f) => f.name == 'thisIsFutureOr');
thisIsFutureOrNull =
fakeLibrary.functions.firstWhere((f) => f.name == 'thisIsFutureOrNull');
thisIsFutureOrT =
fakeLibrary.functions.firstWhere((f) => f.name == 'thisIsFutureOrT');
topLevelFunction =
fakeLibrary.functions.firstWhere((f) => f.name == 'topLevelFunction');
});
typeParamOfFutureOr =
fakeLibrary.functions.firstWhere((f) => f.name == 'typeParamOfFutureOr');
});

test('has a fully qualified name', () {
expect(thisIsAsync.fullyQualifiedName, 'fake.thisIsAsync');
Expand Down Expand Up @@ -1102,6 +1116,29 @@ void main() {
'<p>An async function. It should look like I return a <code>Future</code>.</p>'));
});

test('function returning FutureOr', () {
expect(thisIsFutureOr.isAsynchronous, isFalse);
expect(thisIsFutureOr.linkedReturnType, equals('FutureOr'));
});

test('function returning FutureOr<Null>', () {
expect(thisIsFutureOrNull.isAsynchronous, isFalse);
expect(thisIsFutureOrNull.linkedReturnType, equals('FutureOr<span class="signature">&lt;Null&gt;</span>'));
});

test('function returning FutureOr<T>', () {
expect(thisIsFutureOrNull.isAsynchronous, isFalse);
expect(thisIsFutureOrT.linkedReturnType, equals('FutureOr<span class="signature">&lt;T&gt;</span>'));
});

test('function with a parameter having type FutureOr<Null>', () {
expect(paramOfFutureOrNull.linkedParams(), equals('<span class="parameter" id="paramOfFutureOrNull-param-future"><span class="type-annotation">FutureOr<span class="signature">&lt;Null&gt;</span></span> <span class="parameter-name">future</span></span>'));
});

test('function with a bound type to FutureOr', () {
expect(typeParamOfFutureOr.linkedGenericParameters, equals('<span class=\"signature\">&lt;T extends FutureOr<span class=\"signature\">&lt;List&gt;</span>&gt;</span>'));
});

test('docs do not lose brackets in code blocks', () {
expect(topLevelFunction.documentation, contains("['hello from dart']"));
});
Expand Down
15 changes: 15 additions & 0 deletions testing/test_package/lib/fake.dart
Original file line number Diff line number Diff line change
Expand Up @@ -564,6 +564,21 @@ thisIsAsync() async => 42;
/// Explicitly returns a Future and is marked async.
Future thisIsAlsoAsync() async => 43;

/// Explicitly return a `FutureOr`.
FutureOr thisIsFutureOr() => null;

/// Explicitly return a `FutureOr<Null>`.
FutureOr<Null> thisIsFutureOrNull() => null;

/// Explicitly return a `FutureOr<T>`.
FutureOr<T> thisIsFutureOrT<T>() => null;

/// Has a parameter explicitly typed `FutureOr<Null>`.
void paramOfFutureOrNull(FutureOr<Null> future) {}

/// Has a type parameter bound to `FutureOr<List>`.
void typeParamOfFutureOr<T extends FutureOr<List>>() {}

/// A generic function with a type parameter.
void myGenericFunction<S>(int a, bool b, S c) {
return;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,16 @@ <h5>fake library</h5>
<li><a href="fake/paintImage1.html">paintImage1</a></li>
<li><a href="fake/paintImage2.html">paintImage2</a></li>
<li><a href="fake/paramFromAnotherLib.html">paramFromAnotherLib</a></li>
<li><a href="fake/paramOfFutureOrNull.html">paramOfFutureOrNull</a></li>
<li><a href="fake/short.html">short</a></li>
<li><a href="fake/soIntense.html">soIntense</a></li>
<li><a href="fake/thisIsAlsoAsync.html">thisIsAlsoAsync</a></li>
<li><a href="fake/thisIsAsync.html">thisIsAsync</a></li>
<li><a href="fake/thisIsFutureOr.html">thisIsFutureOr</a></li>
<li><a href="fake/thisIsFutureOrNull.html">thisIsFutureOrNull</a></li>
<li><a href="fake/thisIsFutureOrT.html">thisIsFutureOrT</a></li>
<li><a class="deprecated" href="fake/topLevelFunction.html">topLevelFunction</a></li>
<li><a href="fake/typeParamOfFutureOr.html">typeParamOfFutureOr</a></li>

<li class="section-title"><a href="fake/fake-library.html#enums">Enums</a></li>
<li><a href="fake/Color-class.html">Color</a></li>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,16 @@ <h5>fake library</h5>
<li><a href="fake/paintImage1.html">paintImage1</a></li>
<li><a href="fake/paintImage2.html">paintImage2</a></li>
<li><a href="fake/paramFromAnotherLib.html">paramFromAnotherLib</a></li>
<li><a href="fake/paramOfFutureOrNull.html">paramOfFutureOrNull</a></li>
<li><a href="fake/short.html">short</a></li>
<li><a href="fake/soIntense.html">soIntense</a></li>
<li><a href="fake/thisIsAlsoAsync.html">thisIsAlsoAsync</a></li>
<li><a href="fake/thisIsAsync.html">thisIsAsync</a></li>
<li><a href="fake/thisIsFutureOr.html">thisIsFutureOr</a></li>
<li><a href="fake/thisIsFutureOrNull.html">thisIsFutureOrNull</a></li>
<li><a href="fake/thisIsFutureOrT.html">thisIsFutureOrT</a></li>
<li><a class="deprecated" href="fake/topLevelFunction.html">topLevelFunction</a></li>
<li><a href="fake/typeParamOfFutureOr.html">typeParamOfFutureOr</a></li>

<li class="section-title"><a href="fake/fake-library.html#enums">Enums</a></li>
<li><a href="fake/Color-class.html">Color</a></li>
Expand Down
5 changes: 5 additions & 0 deletions testing/test_package_docs/fake/AMixinCallingSuper-class.html
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,16 @@ <h5>fake library</h5>
<li><a href="fake/paintImage1.html">paintImage1</a></li>
<li><a href="fake/paintImage2.html">paintImage2</a></li>
<li><a href="fake/paramFromAnotherLib.html">paramFromAnotherLib</a></li>
<li><a href="fake/paramOfFutureOrNull.html">paramOfFutureOrNull</a></li>
<li><a href="fake/short.html">short</a></li>
<li><a href="fake/soIntense.html">soIntense</a></li>
<li><a href="fake/thisIsAlsoAsync.html">thisIsAlsoAsync</a></li>
<li><a href="fake/thisIsAsync.html">thisIsAsync</a></li>
<li><a href="fake/thisIsFutureOr.html">thisIsFutureOr</a></li>
<li><a href="fake/thisIsFutureOrNull.html">thisIsFutureOrNull</a></li>
<li><a href="fake/thisIsFutureOrT.html">thisIsFutureOrT</a></li>
<li><a class="deprecated" href="fake/topLevelFunction.html">topLevelFunction</a></li>
<li><a href="fake/typeParamOfFutureOr.html">typeParamOfFutureOr</a></li>

<li class="section-title"><a href="fake/fake-library.html#enums">Enums</a></li>
<li><a href="fake/Color-class.html">Color</a></li>
Expand Down
5 changes: 5 additions & 0 deletions testing/test_package_docs/fake/Annotation-class.html
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,16 @@ <h5>fake library</h5>
<li><a href="fake/paintImage1.html">paintImage1</a></li>
<li><a href="fake/paintImage2.html">paintImage2</a></li>
<li><a href="fake/paramFromAnotherLib.html">paramFromAnotherLib</a></li>
<li><a href="fake/paramOfFutureOrNull.html">paramOfFutureOrNull</a></li>
<li><a href="fake/short.html">short</a></li>
<li><a href="fake/soIntense.html">soIntense</a></li>
<li><a href="fake/thisIsAlsoAsync.html">thisIsAlsoAsync</a></li>
<li><a href="fake/thisIsAsync.html">thisIsAsync</a></li>
<li><a href="fake/thisIsFutureOr.html">thisIsFutureOr</a></li>
<li><a href="fake/thisIsFutureOrNull.html">thisIsFutureOrNull</a></li>
<li><a href="fake/thisIsFutureOrT.html">thisIsFutureOrT</a></li>
<li><a class="deprecated" href="fake/topLevelFunction.html">topLevelFunction</a></li>
<li><a href="fake/typeParamOfFutureOr.html">typeParamOfFutureOr</a></li>

<li class="section-title"><a href="fake/fake-library.html#enums">Enums</a></li>
<li><a href="fake/Color-class.html">Color</a></li>
Expand Down
5 changes: 5 additions & 0 deletions testing/test_package_docs/fake/AnotherInterface-class.html
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,16 @@ <h5>fake library</h5>
<li><a href="fake/paintImage1.html">paintImage1</a></li>
<li><a href="fake/paintImage2.html">paintImage2</a></li>
<li><a href="fake/paramFromAnotherLib.html">paramFromAnotherLib</a></li>
<li><a href="fake/paramOfFutureOrNull.html">paramOfFutureOrNull</a></li>
<li><a href="fake/short.html">short</a></li>
<li><a href="fake/soIntense.html">soIntense</a></li>
<li><a href="fake/thisIsAlsoAsync.html">thisIsAlsoAsync</a></li>
<li><a href="fake/thisIsAsync.html">thisIsAsync</a></li>
<li><a href="fake/thisIsFutureOr.html">thisIsFutureOr</a></li>
<li><a href="fake/thisIsFutureOrNull.html">thisIsFutureOrNull</a></li>
<li><a href="fake/thisIsFutureOrT.html">thisIsFutureOrT</a></li>
<li><a class="deprecated" href="fake/topLevelFunction.html">topLevelFunction</a></li>
<li><a href="fake/typeParamOfFutureOr.html">typeParamOfFutureOr</a></li>

<li class="section-title"><a href="fake/fake-library.html#enums">Enums</a></li>
<li><a href="fake/Color-class.html">Color</a></li>
Expand Down
5 changes: 5 additions & 0 deletions testing/test_package_docs/fake/BaseForDocComments-class.html
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,16 @@ <h5>fake library</h5>
<li><a href="fake/paintImage1.html">paintImage1</a></li>
<li><a href="fake/paintImage2.html">paintImage2</a></li>
<li><a href="fake/paramFromAnotherLib.html">paramFromAnotherLib</a></li>
<li><a href="fake/paramOfFutureOrNull.html">paramOfFutureOrNull</a></li>
<li><a href="fake/short.html">short</a></li>
<li><a href="fake/soIntense.html">soIntense</a></li>
<li><a href="fake/thisIsAlsoAsync.html">thisIsAlsoAsync</a></li>
<li><a href="fake/thisIsAsync.html">thisIsAsync</a></li>
<li><a href="fake/thisIsFutureOr.html">thisIsFutureOr</a></li>
<li><a href="fake/thisIsFutureOrNull.html">thisIsFutureOrNull</a></li>
<li><a href="fake/thisIsFutureOrT.html">thisIsFutureOrT</a></li>
<li><a class="deprecated" href="fake/topLevelFunction.html">topLevelFunction</a></li>
<li><a href="fake/typeParamOfFutureOr.html">typeParamOfFutureOr</a></li>

<li class="section-title"><a href="fake/fake-library.html#enums">Enums</a></li>
<li><a href="fake/Color-class.html">Color</a></li>
Expand Down
5 changes: 5 additions & 0 deletions testing/test_package_docs/fake/BaseThingy-class.html
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,16 @@ <h5>fake library</h5>
<li><a href="fake/paintImage1.html">paintImage1</a></li>
<li><a href="fake/paintImage2.html">paintImage2</a></li>
<li><a href="fake/paramFromAnotherLib.html">paramFromAnotherLib</a></li>
<li><a href="fake/paramOfFutureOrNull.html">paramOfFutureOrNull</a></li>
<li><a href="fake/short.html">short</a></li>
<li><a href="fake/soIntense.html">soIntense</a></li>
<li><a href="fake/thisIsAlsoAsync.html">thisIsAlsoAsync</a></li>
<li><a href="fake/thisIsAsync.html">thisIsAsync</a></li>
<li><a href="fake/thisIsFutureOr.html">thisIsFutureOr</a></li>
<li><a href="fake/thisIsFutureOrNull.html">thisIsFutureOrNull</a></li>
<li><a href="fake/thisIsFutureOrT.html">thisIsFutureOrT</a></li>
<li><a class="deprecated" href="fake/topLevelFunction.html">topLevelFunction</a></li>
<li><a href="fake/typeParamOfFutureOr.html">typeParamOfFutureOr</a></li>

<li class="section-title"><a href="fake/fake-library.html#enums">Enums</a></li>
<li><a href="fake/Color-class.html">Color</a></li>
Expand Down
5 changes: 5 additions & 0 deletions testing/test_package_docs/fake/BaseThingy2-class.html
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,16 @@ <h5>fake library</h5>
<li><a href="fake/paintImage1.html">paintImage1</a></li>
<li><a href="fake/paintImage2.html">paintImage2</a></li>
<li><a href="fake/paramFromAnotherLib.html">paramFromAnotherLib</a></li>
<li><a href="fake/paramOfFutureOrNull.html">paramOfFutureOrNull</a></li>
<li><a href="fake/short.html">short</a></li>
<li><a href="fake/soIntense.html">soIntense</a></li>
<li><a href="fake/thisIsAlsoAsync.html">thisIsAlsoAsync</a></li>
<li><a href="fake/thisIsAsync.html">thisIsAsync</a></li>
<li><a href="fake/thisIsFutureOr.html">thisIsFutureOr</a></li>
<li><a href="fake/thisIsFutureOrNull.html">thisIsFutureOrNull</a></li>
<li><a href="fake/thisIsFutureOrT.html">thisIsFutureOrT</a></li>
<li><a class="deprecated" href="fake/topLevelFunction.html">topLevelFunction</a></li>
<li><a href="fake/typeParamOfFutureOr.html">typeParamOfFutureOr</a></li>

<li class="section-title"><a href="fake/fake-library.html#enums">Enums</a></li>
<li><a href="fake/Color-class.html">Color</a></li>
Expand Down
5 changes: 5 additions & 0 deletions testing/test_package_docs/fake/CUSTOM_CLASS-constant.html
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,16 @@ <h5>fake library</h5>
<li><a href="fake/paintImage1.html">paintImage1</a></li>
<li><a href="fake/paintImage2.html">paintImage2</a></li>
<li><a href="fake/paramFromAnotherLib.html">paramFromAnotherLib</a></li>
<li><a href="fake/paramOfFutureOrNull.html">paramOfFutureOrNull</a></li>
<li><a href="fake/short.html">short</a></li>
<li><a href="fake/soIntense.html">soIntense</a></li>
<li><a href="fake/thisIsAlsoAsync.html">thisIsAlsoAsync</a></li>
<li><a href="fake/thisIsAsync.html">thisIsAsync</a></li>
<li><a href="fake/thisIsFutureOr.html">thisIsFutureOr</a></li>
<li><a href="fake/thisIsFutureOrNull.html">thisIsFutureOrNull</a></li>
<li><a href="fake/thisIsFutureOrT.html">thisIsFutureOrT</a></li>
<li><a class="deprecated" href="fake/topLevelFunction.html">topLevelFunction</a></li>
<li><a href="fake/typeParamOfFutureOr.html">typeParamOfFutureOr</a></li>

<li class="section-title"><a href="fake/fake-library.html#enums">Enums</a></li>
<li><a href="fake/Color-class.html">Color</a></li>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,16 @@ <h5>fake library</h5>
<li><a href="fake/paintImage1.html">paintImage1</a></li>
<li><a href="fake/paintImage2.html">paintImage2</a></li>
<li><a href="fake/paramFromAnotherLib.html">paramFromAnotherLib</a></li>
<li><a href="fake/paramOfFutureOrNull.html">paramOfFutureOrNull</a></li>
<li><a href="fake/short.html">short</a></li>
<li><a href="fake/soIntense.html">soIntense</a></li>
<li><a href="fake/thisIsAlsoAsync.html">thisIsAlsoAsync</a></li>
<li><a href="fake/thisIsAsync.html">thisIsAsync</a></li>
<li><a href="fake/thisIsFutureOr.html">thisIsFutureOr</a></li>
<li><a href="fake/thisIsFutureOrNull.html">thisIsFutureOrNull</a></li>
<li><a href="fake/thisIsFutureOrT.html">thisIsFutureOrT</a></li>
<li><a class="deprecated" href="fake/topLevelFunction.html">topLevelFunction</a></li>
<li><a href="fake/typeParamOfFutureOr.html">typeParamOfFutureOr</a></li>

<li class="section-title"><a href="fake/fake-library.html#enums">Enums</a></li>
<li><a href="fake/Color-class.html">Color</a></li>
Expand Down
5 changes: 5 additions & 0 deletions testing/test_package_docs/fake/Callback2.html
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,16 @@ <h5>fake library</h5>
<li><a href="fake/paintImage1.html">paintImage1</a></li>
<li><a href="fake/paintImage2.html">paintImage2</a></li>
<li><a href="fake/paramFromAnotherLib.html">paramFromAnotherLib</a></li>
<li><a href="fake/paramOfFutureOrNull.html">paramOfFutureOrNull</a></li>
<li><a href="fake/short.html">short</a></li>
<li><a href="fake/soIntense.html">soIntense</a></li>
<li><a href="fake/thisIsAlsoAsync.html">thisIsAlsoAsync</a></li>
<li><a href="fake/thisIsAsync.html">thisIsAsync</a></li>
<li><a href="fake/thisIsFutureOr.html">thisIsFutureOr</a></li>
<li><a href="fake/thisIsFutureOrNull.html">thisIsFutureOrNull</a></li>
<li><a href="fake/thisIsFutureOrT.html">thisIsFutureOrT</a></li>
<li><a class="deprecated" href="fake/topLevelFunction.html">topLevelFunction</a></li>
<li><a href="fake/typeParamOfFutureOr.html">typeParamOfFutureOr</a></li>

<li class="section-title"><a href="fake/fake-library.html#enums">Enums</a></li>
<li><a href="fake/Color-class.html">Color</a></li>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,16 @@ <h5>fake library</h5>
<li><a href="fake/paintImage1.html">paintImage1</a></li>
<li><a href="fake/paintImage2.html">paintImage2</a></li>
<li><a href="fake/paramFromAnotherLib.html">paramFromAnotherLib</a></li>
<li><a href="fake/paramOfFutureOrNull.html">paramOfFutureOrNull</a></li>
<li><a href="fake/short.html">short</a></li>
<li><a href="fake/soIntense.html">soIntense</a></li>
<li><a href="fake/thisIsAlsoAsync.html">thisIsAlsoAsync</a></li>
<li><a href="fake/thisIsAsync.html">thisIsAsync</a></li>
<li><a href="fake/thisIsFutureOr.html">thisIsFutureOr</a></li>
<li><a href="fake/thisIsFutureOrNull.html">thisIsFutureOrNull</a></li>
<li><a href="fake/thisIsFutureOrT.html">thisIsFutureOrT</a></li>
<li><a class="deprecated" href="fake/topLevelFunction.html">topLevelFunction</a></li>
<li><a href="fake/typeParamOfFutureOr.html">typeParamOfFutureOr</a></li>

<li class="section-title"><a href="fake/fake-library.html#enums">Enums</a></li>
<li><a href="fake/Color-class.html">Color</a></li>
Expand Down
5 changes: 5 additions & 0 deletions testing/test_package_docs/fake/Color-class.html
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,16 @@ <h5>fake library</h5>
<li><a href="fake/paintImage1.html">paintImage1</a></li>
<li><a href="fake/paintImage2.html">paintImage2</a></li>
<li><a href="fake/paramFromAnotherLib.html">paramFromAnotherLib</a></li>
<li><a href="fake/paramOfFutureOrNull.html">paramOfFutureOrNull</a></li>
<li><a href="fake/short.html">short</a></li>
<li><a href="fake/soIntense.html">soIntense</a></li>
<li><a href="fake/thisIsAlsoAsync.html">thisIsAlsoAsync</a></li>
<li><a href="fake/thisIsAsync.html">thisIsAsync</a></li>
<li><a href="fake/thisIsFutureOr.html">thisIsFutureOr</a></li>
<li><a href="fake/thisIsFutureOrNull.html">thisIsFutureOrNull</a></li>
<li><a href="fake/thisIsFutureOrT.html">thisIsFutureOrT</a></li>
<li><a class="deprecated" href="fake/topLevelFunction.html">topLevelFunction</a></li>
<li><a href="fake/typeParamOfFutureOr.html">typeParamOfFutureOr</a></li>

<li class="section-title"><a href="fake/fake-library.html#enums">Enums</a></li>
<li><a href="fake/Color-class.html">Color</a></li>
Expand Down
5 changes: 5 additions & 0 deletions testing/test_package_docs/fake/ConstantClass-class.html
Original file line number Diff line number Diff line change
Expand Up @@ -112,11 +112,16 @@ <h5>fake library</h5>
<li><a href="fake/paintImage1.html">paintImage1</a></li>
<li><a href="fake/paintImage2.html">paintImage2</a></li>
<li><a href="fake/paramFromAnotherLib.html">paramFromAnotherLib</a></li>
<li><a href="fake/paramOfFutureOrNull.html">paramOfFutureOrNull</a></li>
<li><a href="fake/short.html">short</a></li>
<li><a href="fake/soIntense.html">soIntense</a></li>
<li><a href="fake/thisIsAlsoAsync.html">thisIsAlsoAsync</a></li>
<li><a href="fake/thisIsAsync.html">thisIsAsync</a></li>
<li><a href="fake/thisIsFutureOr.html">thisIsFutureOr</a></li>
<li><a href="fake/thisIsFutureOrNull.html">thisIsFutureOrNull</a></li>
<li><a href="fake/thisIsFutureOrT.html">thisIsFutureOrT</a></li>
<li><a class="deprecated" href="fake/topLevelFunction.html">topLevelFunction</a></li>
<li><a href="fake/typeParamOfFutureOr.html">typeParamOfFutureOr</a></li>

<li class="section-title"><a href="fake/fake-library.html#enums">Enums</a></li>
<li><a href="fake/Color-class.html">Color</a></li>
Expand Down
Loading