diff --git a/CHANGELOG.md b/CHANGELOG.md index 7415873..2b429ca 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +## 1.0.0-alpha+8 + +- Fix an import scoping bug in `return` statements and named constructor invocations. + ## 1.0.0-alpha+7 - Make use of new analyzer API in preparation for analyzer version 0.30. diff --git a/lib/src/builders/expression/return.dart b/lib/src/builders/expression/return.dart index 41de436..2a0af29 100644 --- a/lib/src/builders/expression/return.dart +++ b/lib/src/builders/expression/return.dart @@ -16,7 +16,7 @@ class _AsReturn extends TopLevelMixin implements StatementBuilder { Statement buildStatement([Scope scope]) { return astFactory.returnStatement( $return, - _value.buildExpression(), + _value.buildExpression(scope), $semicolon, ); } diff --git a/lib/src/builders/method.dart b/lib/src/builders/method.dart index 6ac013c..5ba04f1 100644 --- a/lib/src/builders/method.dart +++ b/lib/src/builders/method.dart @@ -492,7 +492,7 @@ class _NormalConstructorBuilder extends Object null, null, null, - returnType.buildType().name, + returnType.buildType(scope).name, _name != null ? $period : null, _name != null ? stringIdentifier(_name) : null, buildParameterList(scope), diff --git a/pubspec.yaml b/pubspec.yaml index 9fbdca2..de1f53f 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,5 +1,5 @@ name: code_builder -version: 1.0.0-alpha+7 +version: 1.0.0-alpha+8 description: A fluent API for generating Dart code author: Dart Team homepage: https://github.com/dart-lang/code_builder diff --git a/test/e2e_test.dart b/test/e2e_test.dart index 1c88780..9a00f7e 100644 --- a/test/e2e_test.dart +++ b/test/e2e_test.dart @@ -84,7 +84,11 @@ void main() { reference('_module').invoke('getDep1', []), reference('_module').invoke('getDep2', []), ]), - )..addAnnotation(lib$core.override))); + )..addAnnotation(lib$core.override)) + ..addMethod(new MethodBuilder( + 'instantiateAndReturnNamedThing', + returnType: thingRef, + )..addStatement(thingRef.namedNewInstance('named', []).asReturn()))); expect( lib, equalsSource( @@ -99,6 +103,10 @@ void main() { @override _i2.Thing getThing() => new _i2.Thing(_module.getDep1(), _module.getDep2()); + + _i2.Thing instantiateAndReturnNamedThing() { + return new _i2.Thing.named(); + } } ''', pretty: true,