blob: ba38190007bc9453e3b42c892a9b7d3ae36fec57 [file] [log] [blame]
// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'package:compiler/src/compiler.dart' show Compiler;
import 'package:compiler/src/elements/elements.dart';
import 'package:test/test.dart';
import 'helper.dart' show check;
main() {
test('simple default constructor', () {
String code = '''
class A {
}
main() {
var a = new A();
return a;
}''';
return check(code, lookup: defaultConstructorFor('A'));
});
test('simple default constructor with field', () {
String code = '''
class A {
int x = 1;
}
main() {
var a = new A();
return a;
}''';
return check(code, lookup: defaultConstructorFor('A'));
});
test('redirecting constructor with field', () {
String code = '''
class Foo {
final int value;
const Foo({int number: 0}) : this.poodle(number * 2);
const Foo.poodle(this.value);
}
main() => new Foo(number: 3);
''';
return check(code, lookup: defaultConstructorFor('Foo'));
});
}
defaultConstructorFor(String className) => (Compiler compiler) {
ClassElement clazz = compiler.mainApp.find(className);
return clazz.lookupDefaultConstructor();
};