// Copyright (c) 2012, 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. // Test that parameters keep their names in the output. import "package:expect/async_helper.dart"; import "package:expect/expect.dart"; import '../helpers/compiler_helper.dart'; const String TEST_ONE = r""" class A { } class B { } main() { A(); B(); } """; const String TEST_TWO = r""" class A { } class B extends A { } main() { A(); B(); String c = ''; print(c); } """; const String TEST_THREE = r""" class B extends A { } class A { } main() { String c = ''; print(c); B(); A(); } """; const String TEST_FOUR = r""" var g = 0; class A { @pragma('dart2js:noElision') var x = g++; } class B extends A { @pragma('dart2js:noElision') var y = g++; @pragma('dart2js:noElision') var z = g++; } main() { B(); } """; const String TEST_FIVE = r""" class A { @pragma('dart2js:noElision') var a; A(a) : this.a = a {} } main() { A(3); } """; twoClasses() async { String generated = await compileAll(TEST_ONE); Expect.isTrue(generated.contains('A: function A()')); Expect.isTrue(generated.contains('B: function B()')); } subClass() async { checkOutput(String generated) { Expect.isTrue( generated.contains(RegExp(r'_inherit\([$A-Z]+\.B, [$A-Z]+\.A\)')), ); } checkOutput(await compileAll(TEST_TWO)); checkOutput(await compileAll(TEST_THREE)); } fieldTest() async { String generated = await compileAll(TEST_FOUR); Expect.isTrue( generated.contains( RegExp( r'B: function B\(t0, t1, t2\) {' r'\s*this.y = t0;' r'\s*this.z = t1;' r'\s*this.x = t2;', ), ), ); } constructor1() async { String generated = await compileAll(TEST_FIVE); Expect.isTrue( generated.contains(new RegExp(r"new [$A-Z]+\.A\(a\);")), '--------------------\n$generated\n', ); } main() { runTests() async { await twoClasses(); await subClass(); await fieldTest(); await constructor1(); } asyncTest(() async { print('--test from kernel------------------------------------------------'); await runTests(); }); }