commit | 9a02f5bf4dd680bffc384123df69a557c9782abc | [log] [tgz] |
---|---|---|
author | Samir Jindel <sjindel@google.com> | Thu May 31 18:46:07 2018 +0000 |
committer | commit-bot@chromium.org <commit-bot@chromium.org> | Thu May 31 18:46:07 2018 +0000 |
tree | 8f1e8af797e9d4ee35f40ee50255bcac91743746 | |
parent | 0aad13db00bed03669f1684d8c0da4c4f64660f0 [diff] |
[vm/kernel] Fix bugs with expression evaluation in debug mode. Fixes #33170: We had an assert that type variables are not bounded by "dynamic". This assert was previously valid because the FE replaces "extends dynamic" with "extends Object". However, it's not necessary in any way, and it's difficult to access the Object type from outside the FE when synthesizing type parameters for expression compilation. Fixes #33171: The synthetic class generated during serialization to hold the synthetic method may need to extend core library classes if the expression's scope was within a core library class. In this case, the class finalizer needs to avoid applying the restrictions on class extension to the synthetic class. To facilitate this, we now use a single class name for all synthetic classes, rather than copying the original class name. The name of the synthetic class has no function at all, since the synthetic method is reparented to the original class before execution. Fixes #33239: The arguments descriptor passed to InvokeFunction for expression functions which capture generic type parameters was using the wrong argument count. Fixes #33270: Use LookupClassAllowPrivate instead of LookupClass when resolving the expression's scope in the VM. Test Plan: #33170: python tools/test.py -m debug -c dartk --strong service/evaluate_function_type_parameters_test #33171: python tools/test.py -m debug -c dartk --strong service/eval_test #33239: Updated "evaluate_function_type_parameters_test.dart". #33270: Updated "eval_test.dart". Change-Id: I376926bddd2224ec2322b43685d6c13831f1a8e7 Reviewed-on: https://dart-review.googlesource.com/56060 Commit-Queue: Samir Jindel <sjindel@google.com> Reviewed-by: Siva Annamalai <asiva@google.com> Reviewed-by: Alexander Aprelev <aam@google.com>
Dart is an open-source, scalable programming language, with robust libraries and runtimes, for building web, server, and mobile apps.
Visit the dartlang.org to learn more about the language, tools, getting started, and more.
Browse pub.dartlang.org for more packages and libraries contributed by the community and the Dart team.
If you want to build Dart yourself, here is a guide to getting the source, preparing your machine to build the SDK, and building.
There are more documents on our wiki.
The easiest way to contribute to Dart is to file issues.
You can also contribute patches, as described in Contributing.