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.09k stars 1.56k forks source link

Unevaluated consts in DDK with constants-update-2018 enabled #37532

Closed vsmenon closed 5 years ago

vsmenon commented 5 years ago

Per @a-siva, the Flutter HHH bots is failing with:

[ +525 ms] Error compiling dartdevc module:test_api|lib/src/backend/metadata.ddc.js

           We're sorry, you've found a bug in our compiler.
           You can report this bug at:
               https://github.com/dart-lang/sdk/issues/labels/area-dev-compiler
           Please include the information below in your report, along with
           any other information that may help us track it down. Thanks!
           -------------------- %< --------------------
               dartdevc -k arguments: --dart-sdk-summary=/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/kernel/flutter_ddc_sdk.dill --modules=amd --no-summarize -o packages/test_api/src/backend/metadata.ddc.js --source-map --summary=packages/collection/src/utils.ddc.dill=packages/collection/src/utils --summary=packages/collection/src/algorithms.ddc.dill=packages/collection/src/algorithms --summary=packages/collection/src/iterable_zip.ddc.dill=packages/collection/src/iterable_zip --summary=packages/collection/src/comparators.ddc.dill=packages/collection/src/comparators --summary=packages/collection/src/priority_queue.ddc.dill=packages/collection/src/priority_queue --summary=packages/collection/src/canonicalized_map.ddc.dill=packages/collection/src/canonicalized_map --summary=packages/collection/collection.ddc.dill=packages/collection/collection --summary=packages/async/async.ddc.dill=packages/async/async --summary=packages/stream_channel/stream_channel.ddc.dill=packages/stream_channel/stream_channel --summary=packages/meta/meta.ddc.dill=packages/meta/meta --summary=packages/charcode/ascii.ddc.dill=packages/charcode/ascii --summary=packages/charcode/html_entity.ddc.dill=packages/charcode/html_entity --summary=packages/charcode/charcode.ddc.dill=packages/charcode/charcode --summary=packages/path/path.ddc.dill=packages/path/path --summary=packages/term_glyph/src/generated/ascii_glyph_set.ddc.dill=packages/term_glyph/src/generated/ascii_glyph_set --summary=packages/source_span/source_span.ddc.dill=packages/source_span/source_span --summary=packages/string_scanner/src/eager_span_scanner.ddc.dill=packages/string_scanner/src/eager_span_scanner --summary=packages/boolean_selector/boolean_selector.ddc.dill=packages/boolean_selector/boolean_selector --summary=packages/stack_trace/src/chain.ddc.dill=packages/stack_trace/src/chain --summary=packages/matcher/src/core_matchers.ddc.dill=packages/matcher/src/core_matchers --summary=packages/matcher/matcher.ddc.dill=packages/matcher/matcher --packages=file:///b/s/w/ir/tmp/t/kernel_builder_KTNLDH/.packages --module-name=packages/test_api/src/backend/metadata --multi-root-scheme=org-dartlang-app --multi-root=. --track-widget-creation --inline-source-map package:test_api/src/backend/operating_system.dart package:test_api/src/frontend/timeout.dart package:test_api/src/backend/platform_selector.dart package:test_api/src/utils.dart package:test_api/src/backend/runtime.dart package:test_api/src/backend/metadata.dart package:test_api/src/frontend/skip.dart package:test_api/src/backend/suite_platform.dart
               dart --version: 2.5.0-dev.1.0.flutter-db7ab14167 (Mon Jul 15 07:34:15 2019 +0000) on "linux_x64"

           Unsupported operation: Instance creation
           #0      ProgramCompiler.visitInstanceCreation (package:dev_compiler/src/kernel/compiler.dart:4931:5)
           #1      InstanceCreation.accept (package:kernel/ast.dart:3354:36)
           #2      ProgramCompiler._visitExpression (package:dev_compiler/src/kernel/compiler.dart:3104:20)
           #3      ProgramCompiler.visitUnevaluatedConstant (package:dev_compiler/src/kernel/compiler.dart:5379:7)
           #4      UnevaluatedConstant.accept (package:kernel/ast.dart:5898:34)
           #5      ProgramCompiler.visitConstantExpression (package:dev_compiler/src/kernel/compiler.dart:3783:21)
           #6      ConstantExpression.accept (package:kernel/ast.dart:3785:36)
           #7      ProgramCompiler._visitExpression (package:dev_compiler/src/kernel/compiler.dart:3104:20)
           #8      ProgramCompiler._visitInitializer (package:dev_compiler/src/kernel/compiler.dart:1564:11)
           #9      ProgramCompiler._emitStaticFieldInitializer.<anonymous closure> (package:dev_compiler/src/kernel/compiler.dart:2090:19)
           #10     ProgramCompiler._withLetScope (package:dev_compiler/src/kernel/compiler.dart:2098:25)
           #11     ProgramCompiler._emitStaticFieldInitializer (package:dev_compiler/src/kernel/compiler.dart:2088:22)
           #12     ProgramCompiler._emitLazyFields (package:dev_compiler/src/kernel/compiler.dart:2065:43)
           #13     ProgramCompiler._emitStaticFields (package:dev_compiler/src/kernel/compiler.dart:1117:16)
           #14     ProgramCompiler._emitClassDeclaration (package:dev_compiler/src/kernel/compiler.dart:530:5)
           #15     ProgramCompiler._emitClass (package:dev_compiler/src/kernel/compiler.dart:446:21)
           #16     List.forEach (dart:core-patch/growable_array.dart:278:8)
           #17     ProgramCompiler._emitLibrary (package:dev_compiler/src/kernel/compiler.dart:392:23)
           #18     Iterable.forEach (dart:core/iterable.dart:277:30)
           #19     ProgramCompiler.emitModule (package:dev_compiler/src/kernel/compiler.dart:298:15)
           #20     _compile (package:dev_compiler/src/kernel/command.dart:377:27)
           <asynchronous suspension>
           #21     compile (package:dev_compiler/src/kernel/command.dart:43:18)
           <asynchronous suspension>
           #22     compile (package:dev_compiler/src/compiler/shared_command.dart:408:12)
           #23     _CompilerWorker.performRequest.<anonymous closure> (file:///b/s/w/ir/cache/builder/src/third_party/dart/pkg/dev_compiler/bin/dartdevc.dart:64:13)
           #24     _rootRun (dart:async/zone.dart:1124:13)
           #25     _CustomZone.run (dart:async/zone.dart:1021:19)
           #26     _runZoned (dart:async/zone.dart:1516:10)
           #27     runZoned (dart:async/zone.dart:1463:12)
           #28     _CompilerWorker.performRequest (file:///b/s/w/ir/cache/builder/src/third_party/dart/pkg/dev_compiler/bin/dartdevc.dart:62:24)
           <asynchronous suspension>
           #29     AsyncWorkerLoop.run.<anonymous closure> (package:bazel_worker/src/worker/async_worker_loop.dart:33:41)
           #30     _rootRun (dart:async/zone.dart:1124:13)
           #31     _CustomZone.run (dart:async/zone.dart:1021:19)
           #32     _runZoned (dart:async/zone.dart:1516:10)
           #33     runZoned (dart:async/zone.dart:1463:12)
           #34     AsyncWorkerLoop.run (package:bazel_worker/src/worker/async_worker_loop.dart:33:26)
           <asynchronous suspension>
           #35     main (file:///b/s/w/ir/cache/builder/src/third_party/dart/pkg/dev_compiler/bin/dartdevc.dart:28:57)
           <asynchronous suspension>
           #36     _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:301:32)
           #37     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:172:12)
vsmenon commented 5 years ago

Appears related to:

https://github.com/dart-lang/sdk/issues/36635

vsmenon commented 5 years ago

This is the compile that's breaking:

dartdevc -k arguments: --dart-sdk-summary=/b/s/w/ir/cache/builder/src/out/host_debug/flutter_web_sdk/kernel/flutter_ddc_sdk.dill --modules=amd --no-summarize -o packages/test_api/src/backend/metadata.ddc.js --source-map --summary=packages/collection/src/utils.ddc.dill=packages/collection/src/utils --summary=packages/collection/src/algorithms.ddc.dill=packages/collection/src/algorithms --summary=packages/collection/src/iterable_zip.ddc.dill=packages/collection/src/iterable_zip --summary=packages/collection/src/comparators.ddc.dill=packages/collection/src/comparators --summary=packages/collection/src/priority_queue.ddc.dill=packages/collection/src/priority_queue --summary=packages/collection/src/canonicalized_map.ddc.dill=packages/collection/src/canonicalized_map --summary=packages/collection/collection.ddc.dill=packages/collection/collection --summary=packages/async/async.ddc.dill=packages/async/async --summary=packages/stream_channel/stream_channel.ddc.dill=packages/stream_channel/stream_channel --summary=packages/meta/meta.ddc.dill=packages/meta/meta --summary=packages/charcode/ascii.ddc.dill=packages/charcode/ascii --summary=packages/charcode/html_entity.ddc.dill=packages/charcode/html_entity --summary=packages/charcode/charcode.ddc.dill=packages/charcode/charcode --summary=packages/path/path.ddc.dill=packages/path/path --summary=packages/term_glyph/src/generated/ascii_glyph_set.ddc.dill=packages/term_glyph/src/generated/ascii_glyph_set --summary=packages/source_span/source_span.ddc.dill=packages/source_span/source_span --summary=packages/string_scanner/src/eager_span_scanner.ddc.dill=packages/string_scanner/src/eager_span_scanner --summary=packages/boolean_selector/boolean_selector.ddc.dill=packages/boolean_selector/boolean_selector --summary=packages/stack_trace/src/chain.ddc.dill=packages/stack_trace/src/chain --summary=packages/matcher/src/core_matchers.ddc.dill=packages/matcher/src/core_matchers --summary=packages/matcher/matcher.ddc.dill=packages/matcher/matcher --packages=file:///b/s/w/ir/tmp/t/kernel_builder_KTNLDH/.packages --module-name=packages/test_api/src/backend/metadata --multi-root-scheme=org-dartlang-app --multi-root=. --track-widget-creation --inline-source-map package:test_api/src/backend/operating_system.dart package:test_api/src/frontend/timeout.dart package:test_api/src/backend/platform_selector.dart package:test_api/src/utils.dart package:test_api/src/backend/runtime.dart package:test_api/src/backend/metadata.dart package:test_api/src/frontend/skip.dart package:test_api/src/backend/suite_platform.dart

@grouma - should the files above (package:test_api) be compilable with DDC?

nshahan commented 5 years ago

Looking at this with @grouma, it looks like it could be an issue of embedding constants within another that come from different modules. It looks like the pattern appears here: https://github.com/dart-lang/test/blob/dd7165ac81eb1a7c97526a3b1665b6c641eab237/pkgs/test_api/lib/src/backend/platform_selector.dart#L26

@Markzipan identified this issue in a comment https://github.com/dart-lang/sdk/issues/37523#issuecomment-511159009.

I'll build a modular test that includes this pattern you can repro with.

nshahan commented 5 years ago

Here is a modular test that produces a similar stack trace. https://dart-review.googlesource.com/c/sdk/+/109142/2

To repro, patch the change and run dart pkg/dev_compiler/test/modular_suite.dart --filter nested_constants -v

vsmenon commented 5 years ago

@johnniwinther , can you take a look?

Our understanding (see Aske's comment: https://github.com/dart-lang/sdk/issues/36635#issuecomment-504341005) is that we should not see unevaluated constants, and that this is a sign this info in missing from the outline dill.

johnniwinther commented 5 years ago

We shouldn't see unevaluated constants. I have CL that hopefully fixes this: https://dart-review.googlesource.com/c/sdk/+/109261