Skip to content

Can't create a Visitor instance within BodyBuilder without breaking some service tests #32717

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
chloestefantsova opened this issue Mar 30, 2018 · 2 comments
Labels
front-end-kernel legacy-area-front-end Legacy: Use area-dart-model instead.

Comments

@chloestefantsova
Copy link
Contributor

Here's how the issue can be reproduced.

Step 1. Apply the following patch

diff --git a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
index 5021047a80..73b45a51ef 100644
--- a/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
+++ b/pkg/front_end/lib/src/fasta/kernel/body_builder.dart
@@ -6,6 +6,8 @@ library fasta.body_builder;

 import 'dart:core' hide MapEntry;

+import 'package:kernel/visitor.dart' show Visitor;
+
 import '../constant_context.dart' show ConstantContext;

 import '../fasta_codes.dart' as fasta;
@@ -91,6 +93,8 @@ const noLocation = null;

 class BodyBuilder<Arguments> extends ScopeListener<JumpTarget>
     implements BuilderHelper<Arguments> {
+  final Visitor<dynamic> visitor = new Visitor<dynamic>();
+
   @override
   final KernelLibraryBuilder library;

Step 2. Build the runtime for Kernel

$ ./tools/build.py -m release -a x64 runtime_kernel

Step 3. Run the test

$ python tools/test.py -m release -c dartk service/type_arguments_test
Test configuration: dartk_vm_release_x64

FAILED: dartk-vm release_x64 service/type_arguments_test
Expected: Pass
Actual: RuntimeError

--- Command "vm" (took 02.000083s):
DART_CONFIGURATION=ReleaseX64 out/ReleaseX64/dart --preview_dart_2 --error_on_bad_type --error_on_bad_override --ignore-unrecognized-flags --packages=/usr/local/google/home/dmitr
yas/dart/sdk/.packages /usr/local/google/home/dmitryas/dart/sdk/runtime/observatory/tests/service/type_arguments_test.dart

exit code:
255

stdout:
** Launching SERVICE_TEST_TESTEE=true out/ReleaseX64/dart -DDART_SERVICE_USE_AUTH=false --profiler --preview_dart_2 --error_on_bad_type --error_on_bad_override --ignore-unrecogni
zed-flags --packages=/usr/local/google/home/dmitryas/dart/sdk/.packages --enable-vm-service:0 /usr/local/google/home/dmitryas/dart/sdk/runtime/observatory/tests/service/type_argu
ments_test.dart
>testee>out> Observatory listening on http://127.0.0.1:43723/
** Signaled to run test queries on http://127.0.0.1:43723/
>testee>out>
Loading VM...
Done loading VM
Running type_arguments_test.dart [1/1]
** Killing script
Unexpected exception in service tests: type 'String' is not a subtype of type 'bool' of 'value' where
  String is from dart:core
  bool is from dart:core

#0      __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.[]= (dart:collection/runtime/libcompact_hash.dart)
#1      Isolate.invokeRpcNoUpgrade (file:///usr/local/google/home/dmitryas/dart/sdk/runtime/observatory/lib/src/service/object.dart:1498:11)
#2      Isolate.invokeRpc (file:///usr/local/google/home/dmitryas/dart/sdk/runtime/observatory/lib/src/service/object.dart:1503:12)
#3      Isolate.getTypeArgumentsList (file:///usr/local/google/home/dmitryas/dart/sdk/runtime/observatory/lib/src/service/object.dart:1951:12)
#4      tests.<anonymous closure> (file:///usr/local/google/home/dmitryas/dart/sdk/runtime/observatory/tests/service/type_arguments_test.dart:12:15)
#5      _ServiceTesterRunner.run.<anonymous closure>.<anonymous closure> (file:///usr/local/google/home/dmitryas/dart/sdk/runtime/observatory/tests/service/test_helper.dart:331:2
3)
<asynchronous suspension>
#6      _rootRunUnary (dart:async/zone.dart:1134:38)
#7      _CustomZone.runUnary (dart:async/zone.dart:1031:19)
#8      _FutureListener.handleValue (dart:async/future_impl.dart:129:18)
#9      Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:633:45)
#10     Future._propagateToListeners (dart:async/future_impl.dart:662:32)
#11     Future._completeWithValue (dart:async/future_impl.dart:477:5)
#12     Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:507:7)
#13     _rootRun (dart:async/zone.dart:1126:13)
#14     _CustomZone.run (dart:async/zone.dart:1023:19)
#15     _CustomZone.runGuarded (dart:async/zone.dart:925:7)
#16     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:965:23)
#17     _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
#18     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
#19     _runPendingImmediateCallback (dart:isolate/runtime/libisolate_patch.dart:113:13)
#20     _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:166:5)

stderr:
Unhandled exception:
type 'String' is not a subtype of type 'bool' of 'value' where
  String is from dart:core
  bool is from dart:core

#0      __InternalLinkedHashMap&_HashVMBase&MapMixin&_LinkedHashMapMixin.[]= (dart:collection/runtime/libcompact_hash.dart)
#1      Isolate.invokeRpcNoUpgrade (file:///usr/local/google/home/dmitryas/dart/sdk/runtime/observatory/lib/src/service/object.dart:1498:11)
#2      Isolate.invokeRpc (file:///usr/local/google/home/dmitryas/dart/sdk/runtime/observatory/lib/src/service/object.dart:1503:12)
#3      Isolate.getTypeArgumentsList (file:///usr/local/google/home/dmitryas/dart/sdk/runtime/observatory/lib/src/service/object.dart:1951:12)
#4      tests.<anonymous closure> (file:///usr/local/google/home/dmitryas/dart/sdk/runtime/observatory/tests/service/type_arguments_test.dart:12:15)
#5      _ServiceTesterRunner.run.<anonymous closure>.<anonymous closure> (file:///usr/local/google/home/dmitryas/dart/sdk/runtime/observatory/tests/service/test_helper.dart:331:2
3)
<asynchronous suspension>
#6      _rootRunUnary (dart:async/zone.dart:1134:38)
#7      _CustomZone.runUnary (dart:async/zone.dart:1031:19)
#8      _FutureListener.handleValue (dart:async/future_impl.dart:129:18)
#9      Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:633:45)
#10     Future._propagateToListeners (dart:async/future_impl.dart:662:32)
#11     Future._completeWithValue (dart:async/future_impl.dart:477:5)
#12     Future._asyncComplete.<anonymous closure> (dart:async/future_impl.dart:507:7)
#13     _rootRun (dart:async/zone.dart:1126:13)
#14     _CustomZone.run (dart:async/zone.dart:1023:19)
#15     _CustomZone.runGuarded (dart:async/zone.dart:925:7)
#16     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:965:23)
#17     _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
#18     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
#19     _runPendingImmediateCallback (dart:isolate/runtime/libisolate_patch.dart:113:13)
#20     _RawReceivePortImpl._handleMessage (dart:isolate/runtime/libisolate_patch.dart:166:5)

--- Re-run this test:
python tools/test.py -m release -c dartk service/type_arguments_test

[00:02 | 100% | +    0 | -    1]
@dgrove
Copy link
Contributor

dgrove commented Mar 30, 2018

Does this need to be fixed for beta3?

@chloestefantsova
Copy link
Contributor Author

I'm not sure. The work-around works, so it's not a blocker any more. It would be nice to fix it, though.

@kmillikin kmillikin added legacy-area-front-end Legacy: Use area-dart-model instead. front-end-kernel and removed legacy-area-front-end Legacy: Use area-dart-model instead. area-kernel labels Sep 19, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
front-end-kernel legacy-area-front-end Legacy: Use area-dart-model instead.
Projects
None yet
Development

No branches or pull requests

3 participants