dart-lang / sdk

The Dart SDK, including the VM, JS and Wasm compilers, analysis, core libraries, and more.
https://dart.dev
BSD 3-Clause "New" or "Revised" License
10.2k stars 1.57k forks source link

dart2js does not seem to generate correct code for some optional named parameters #6015

Closed crelier closed 9 years ago

crelier commented 12 years ago

dart2js does not seem to generate correct code for some optional named parameters.

Steps to reproduce (adapt paths to your client): 1) apply https://codereview.chromium.org/11200003 2) build dart2js 3) out/ReleaseIA32/dart-sdk/bin/dart2js --allow-mock-compilation /usr/local/google/home/regis/dart2/dart/pkg/intl/test/bidi_format_test.dart --out=/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js

4) out/ReleaseIA32/d8 /usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js

Result: FAILED: dart2js-d8 release_ia32 pkg/intl/test/bidi_format_test Expected: pass Actual: fail

stdout: test.dart: Compilation finished (step 1 of 2)

unittest-suite-wait-for-done PASS: estimateDirection FAIL: wrapWithSpan   Caught NullPointerException   TypeError: Cannot call method 'get$spanText' of null       at BidiFormatter.$$.BidiFormatter.wrapWithSpan$4$direction$isHtml$resetDir (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:1020:80)       at BidiFormatter.$$.BidiFormatter.wrapWithSpan$3$isHtml$resetDir (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:1029:15)       at main_anon0.$$.main_anon0.call$0 (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:2073:15)       at TestCase.$$.TestCase.test$0 (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:1355:40)       at TestCase.$$.TestCase.run$0 (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:1370:10)       at _nextBatch_anon.$$._nextBatch_anon.call$0 (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:2234:6)       at $.guardAsync (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:4315:20)       at Function.$._nextBatch as call$0       at runTests_anon0.$$.runTests_anon0.call$0 (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:2200:17)       at _defer_anon.$$._defer_anon.call$2 (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:2208:19) FAIL: wrapWithUnicode   Expected: 'abba'        but: was '?abba?'.      Expected: 'abba'        but: was '?abba?'.          at $.$$throw (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:3420:17)       at DefaultFailureHandler.$$.DefaultFailureHandler.fail$1 (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:1325:11)       at DefaultFailureHandler.$$.DefaultFailureHandler.failMatch$5 (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:1328:8)       at $.expect (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:2895:20)       at main_anon1.$$.main_anon1.call$0 (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:2128:5)       at TestCase.$$.TestCase.test$0 (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:1355:40)       at TestCase.$$.TestCase.run$0 (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:1370:10)       at _nextBatch_anon.$$._nextBatch_anon.call$0 (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:2234:6)       at $.guardAsync (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:4315:20)       at Function.$._nextBatch as call$0

1 PASSED, 2 FAILED, 0 ERRORS /usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:3425: Exception: Some tests failed.   throw jsError;         ^ Exception: Some tests failed.     at $.$$throw (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:3420:17)     at Configuration.$$.Configuration.onDone$5 (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:1102:13)     at $._completeTests (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:4047:13)     at Function.$._nextBatch as call$0     at runTests_anon0.$$.runTests_anon0.call$0 (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:2200:17)     at _defer_anon.$$._defer_anon.call$2 (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:2208:19)     at _ReceivePortImpl.$$._ReceivePortImpl._callback$2 (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:1614:60)     at _NativeJsSendPort_send_anon0.$$._NativeJsSendPort_send_anon0.call$0 (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:2360:8)     at _IsolateContext.$$._IsolateContext.eval$1 (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:1456:19)     at _IsolateEvent.$$._IsolateEvent.process$0 (/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js:1543:16)

stderr: test.dart: Compilation finished (step 1 of 2)

Compilation command: out/ReleaseIA32/dart-sdk/bin/dart2js --allow-mock-compilation /usr/local/google/home/regis/dart2/dart/pkg/intl/test/bidi_format_test.dart --out=/usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js

Command line: out/ReleaseIA32/d8 /usr/local/google/home/regis/dart2/dart/out/ReleaseIA32/generated_tests/dart2js-d8/pkg_intl_test_bidi_format_test/out.js

crelier commented 12 years ago

I just notice Nicolas is in vacation. Thanks for having a look, Peter.


Set owner to @peter-ahe-google.

kasperl commented 12 years ago

Added this to the M2 milestone.

peter-ahe-google commented 12 years ago

I can reproduce. I'm trying to create a smaller test case.

peter-ahe-google commented 12 years ago

Here is a small repro:

class Fisk {   foo({b, a: true}) {     if (b == null) return;     throw 'broken';   }

  bar({a, b: true}) {     if (a == null) return;     throw 'broken';   } }

main() {   new Fisk().foo(a: true);   new Fisk().bar(b: true); }

peter-ahe-google commented 12 years ago

Fixed in r13784.


Added Fixed label.

crelier commented 12 years ago

That was quick. Thanks Peter.