This makes it possible to run the spec parser in a way which is a bit
more like the other tools that we have (e.g., tools/test.py):
> tools/spec_parse.py tests/language/callable_test.dart
It still requires the developer to run `make parser` in
tools/spec_parser and hence does not run on a buildbot, but it's one
step forward.
Change-Id: I68ad6cea55bc02dddac21558acec33fc4bfc1981
Reviewed-on: https://dart-review.googlesource.com/9620
Commit-Queue: Erik Ernst <eernst@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
This will be necessary once we start doing type inference on fields in
InterfaceResolver.
Change-Id: If363ba4d2b3b42efd3fa7975a94e29286882d5ab
Reviewed-on: https://dart-review.googlesource.com/12620
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
Successfully migrated 7 tests. Need manual work on 6 tests:
- language_2/try_catch_test.dart:
(TODO) Merge from language/try_catch_test.dart into this file.
- language_2/type_argument_in_super_type_test.dart:
(TODO) Ensure code that checks for a TypeError uses 2.0 semantics.
- language_2/type_check_const_function_typedef2_test.dart:
(TODO) Fix code that mentions "checked" mode.
- language_2/type_checks_in_factory_method_test.dart:
(TODO) Ensure code that checks for a TypeError uses 2.0 semantics.
- language_2/type_conversion_ssa_test.dart:
(TODO) Fix code that mentions "checked" mode.
- language_2/type_error_test.dart:
(TODO) Merge from language/type_error_test.dart into this file.
(TODO) Ensure code that checks for a TypeError uses 2.0 semantics.
Bug:
Change-Id: I43901890540efcf55da13d013571ce91979cbb64
Reviewed-on: https://dart-review.googlesource.com/11142
Commit-Queue: Janice Collins <jcollins@google.com>
Reviewed-by: Janice Collins <jcollins@google.com>
Reviewed-by: Bob Nystrom <rnystrom@google.com>
This allows covariance information to propagate properly between
classes and avoids creation of unnecessary forwarding stubs.
Change-Id: Ib55c62adb74d16f94282e752e387634086001946
Reviewed-on: https://dart-review.googlesource.com/12600
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
Change-Id: I2c2857f5e32328bfe4693038e7ef376f8633758e
Reviewed-on: https://dart-review.googlesource.com/12296
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Commit-Queue: Erik Ernst <eernst@google.com>
_StringBase is used everywhere as if it was assignable to String,
however it itself does not implement String, its subclasses do.
This change addresses this.
Also removes unused native runtime method from one of subclasses.
Bug: https://github.com/dart-lang/sdk/issues/31052
Change-Id: Iea2389d1b48a3689fb11c99c0e230747ab1c5962
Reviewed-on: https://dart-review.googlesource.com/12444
Reviewed-by: Martin Kustermann <kustermann@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
One more failure of the kind described in
https://github.com/dart-lang/sdk/issues/28737 was seen with `$mode ==
product`. This CL adds that mode to the existing status entry.
Change-Id: I073e7b26d7760da1a89d6d2a0ba5ade4b06c64d2
Reviewed-on: https://dart-review.googlesource.com/12443
Reviewed-by: Erik Ernst <eernst@google.com>
Commit-Queue: Erik Ernst <eernst@google.com>
Introduces a handleInvalidStatement method in listeners to signal
that the previous statement was invalid.
Closes https://github.com/dart-lang/sdk/issues/29983
Change-Id: I08d69062aa626a554b88d11d2c8c0e31b0abbe28
Reviewed-on: https://dart-review.googlesource.com/11501
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Dan Rubel <danrubel@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
This type checker can be used to find strong mode violations in the
Kernel files.
This will be used to work on cleaning strong mode violations in VM's patch files
in the absence of any other way to type-check them.
Bug:
Change-Id: Id7005f6312dafe04eb0e7b33d008934b62a1b726
Reviewed-on: https://dart-review.googlesource.com/11883
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
This is necessary because we will need to consult fileOffset and
fileUri in order to make covariance annotations.
Change-Id: I989393cd3f66c0875b4e8e091c7a8d7523a08b20
Reviewed-on: https://dart-review.googlesource.com/12422
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Two changes:
- ShadowClass.getClassInferenceInfo now accepts an ordinary class, and
returns `null`. This will allow us to ensure that if a ShadowClass
gets re-used later as an ordinary Class (which sometimes happens
during incremental analysis), it will behave the same as an ordinary
Class.
- We don't create ShadowClass._inferenceInfo at the time of
ShadowClass creation; we wait until a builder is stored. This will
allow ShadowClass objects with no inference info to be easily
created in unit tests.
Change-Id: I0dd2d65b0c477b069ec36872c13b19ba8ebbd021
Reviewed-on: https://dart-review.googlesource.com/12382
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
This is necessary because the need for a forwarding stub may be
affected by the types of inherited accessors, and the types of
inherited accessors may need to be determined by type inference.
Change-Id: I160cf21186485d2572301f3cda8621ede517c47b
Reviewed-on: https://dart-review.googlesource.com/12400
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
This change fixes bugs that users see when we mark declaration code,
while also reducing the source map size (improving startup & reducing
the load on devtools). The SDK source map is reduced by 41%.
Stack traces and stepping should be more accurate after this change, but
if we identify any node(s) that need different marking, we now have
the tools to refine it further.
Change-Id: Ie50c6aca873be7b7c0f7c238a9db2001acbceb5c
Reviewed-on: https://dart-review.googlesource.com/10210
Commit-Queue: Jennifer Messerly <jmesserly@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
Reviewed-by: Alan Knight <alanknight@google.com>
Previously we were using the presence or absence of an AccessorNode to
determine whether the field was implicitly typed. But AccessorNode is
going to go away soon, so we need a boolean.
Change-Id: I7ef5bfb8be25f753fa674472b72d7bef0d3a2baf
Reviewed-on: https://dart-review.googlesource.com/12380
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
Soon, inference of instance fields will be unified with the logic for
creating forwarding stubs. When this happens, we will need the order
of inference to be:
1 Finish top level inference of static fields.
2 Finish top level inference of other fields, and create forwarding stubs.
3 Finish top level inference of initializing formals.
Currently, (1) and (3) are performed by the same method,
finishTopLevel(). Splitting it into two methods allows us to put (2)
in between.
Change-Id: I70e1a47e8ad604bdb8f0348c54d6017c0a0b57b5
Reviewed-on: https://dart-review.googlesource.com/12381
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
Devirtualization optimization now adds metadata to kernel AST instead
of transforming nodes to Direct* ones. The direct call metadata
provides information about checking receiver for null, while
Direct* kernel nodes do not support null checking.
VM's kernel binary loader is extended to extract arbitrary metadata
from kernel binaries and keep it for flow graph builder.
Kernel flow graph builder is extended to take direct call metadata
into account and generate CheckNull/StaticCall instructions
for devirtualized PropertyGet, PropertySet and MethodInvocation nodes.
Issue: https://github.com/dart-lang/sdk/issues/30480
Change-Id: I57f56fbf4a8981d33b1571c0d93105cf8ca71d76
Reviewed-on: https://dart-review.googlesource.com/12260
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
This makes the compiler happy under -Wstrict-overflow.
Change-Id: Ic91ccd9d716c866e11d6b00de7b95916a73ea5d7
Reviewed-on: https://dart-review.googlesource.com/12346
Commit-Queue: Siva Chandra <sivachandra@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
This change does a couple things:
- When there is a non-default namespace, on Linux, Android, and Fuchsia
the current working directory is per-Isolate.
- On Fuchsia, it caches the fd from fdio_ns_t instead of recomputing it
on every fs access.
Change-Id: I3735330884de51ca853a17d66dcfcfa984b9a041
Reviewed-on: https://dart-review.googlesource.com/9367
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Zach Anderson <zra@google.com>