Commit Graph

678 Commits

Author SHA1 Message Date
Ben Konyi 5afc1ec336 [ VM / Observatory ] Fixed tests that were failing due to lack of sources in app_jitk mode
Change-Id: I74504cc5dea30a0b6841e0bf77d99c1cf3889269
Reviewed-on: https://dart-review.googlesource.com/c/84049
Commit-Queue: Ben Konyi <bkonyi@google.com>
Reviewed-by: Ben Konyi <bkonyi@google.com>
2018-11-14 18:00:53 +00:00
Kevin Moore 037792876a Fix analysis hints/warnings in runtime/observatory
Change-Id: I1afee0f09476185b2690e0c2bc98a4b7ae7bffa6
Reviewed-on: https://dart-review.googlesource.com/c/83480
Commit-Queue: Kevin Moore <kevmoo@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-11-09 00:52:44 +00:00
Ryan Macnak 662ff7f112 [vm] Remove TokenStream, TokenValue, CompilerStats.
(CompilerStats timers have been replaced with the timeline events.)

Change-Id: Iddcb752c085de9762eb802371b6d2905fa608a76
Reviewed-on: https://dart-review.googlesource.com/c/79086
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-10-10 21:39:45 +00:00
Ryan Macnak 72b31316e4 [observatory] Fail gracefully when a Script lacks source code.
Change-Id: I0d19b6da1543447c50a47d70fb896c4d92afa3d4
Reviewed-on: https://dart-review.googlesource.com/c/79084
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-10-10 21:03:14 +00:00
G?nter Z?chbauer 2da0b9f4f1 fix some typos
Closes #34738
https://github.com/dart-lang/sdk/pull/34738

GitOrigin-RevId: d211bbacfe65355cf7304c990ffb6c79d7a229cf
Change-Id: If690e6d378e543b300e1f6a353ceae73e39c29db
Reviewed-on: https://dart-review.googlesource.com/c/78900
Reviewed-by: Alexander Thomas <athom@google.com>
2018-10-10 19:15:30 +00:00
Zach Anderson b4b02a6bde [vm] Include bytecode in core-jit and app-jit snapshots
when the --enable_interpreter flag is passed to gen_snapshot/dart.

Change-Id: I6e9481e1793e4c97fd6b14b56e55aafcb044fc23
Reviewed-on: https://dart-review.googlesource.com/c/78150
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Zach Anderson <zra@google.com>
2018-10-08 19:51:10 +00:00
asiva 76470aca47 [VM] use coresnapshot when initializing an Isolate
- use core snapshot when initializing an isolate (CorelibIsolateStartup benchmark moves from 39s to 2s)
- remove use_dart_frontend flag from the isolate specific flags
- the script snapshot API functions now return an error

Change-Id: Ia562e007fdbfd1d3ebd8e1a0c8feee238bada00b
Reviewed-on: https://dart-review.googlesource.com/76709
Commit-Queue: Siva Annamalai <asiva@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-09-27 00:55:07 +00:00
Jens Johansen d560887ae5 Fix TypeError in Observatory
Get rid of stuff like this (that at least showed up in debug builds):
```
Unexpected exception:

TypeError: 604.0795288085938: type 'JSDouble' is not a subtype of type
'int'

StackTrace:

main.dart.js 3527:17   Object.wrapException
main.dart.js 4000:15   Object.intTypeCheck
main.dart.js 55623:39  HtmlElement._varsTop$1
main.dart.js 55631:23  HtmlElement.dart.DebuggerFrameElement._onScroll$1
main.dart.js 3941:14   Object.eval
[...]
```

(Note that I disabled minification in the example above).

Change-Id: Id79e726c3229ba96b1df5db7d4fb779e4be0913a
Reviewed-on: https://dart-review.googlesource.com/74623
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2018-09-20 06:59:44 +00:00
Jens Johansen 03d68355d6 More observatory fixes
Change-Id: I0a31f70a6c3e1472859c9ae8798dd498e221d672
Reviewed-on: https://dart-review.googlesource.com/70505
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2018-08-20 07:11:33 +00:00
Jens Johansen 3290f60a31 Fix 'toplist by retained memory' in observatory
Prior to this fix I get errors like

```
TypeError: Instance of 'b2<bQ>': type 'b2<bQ>' is not a subtype of type 'List<bQ>'

StackTrace:

main.dart.js 1631:3    Object.m
main.dart.js 2001:9    Object.p
[...]
```

Change-Id: I2fc6329c05cb76bff76929aeee1eca3954fbc0a9
Reviewed-on: https://dart-review.googlesource.com/70501
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2018-08-20 07:03:25 +00:00
Jens Johansen 4deab5bfa1 Observatory: Don't give a stacktrace on Sentinel
E.g. on this:
```
import "dart:developer";

class C {
  foo2() {
    var temp = 1;
    [1, 2, 3].forEach((outer_ea){
      [1, 2, 3].forEach((inner_ea){
         debugger();
         throw "Two!";
      });
    });
  }
}

main() {
  new C().foo2();
}
```

Saying `p this` in the debugger when it stops now says `<optimized out>`
instead of something like
```
Internal error: TypeError: Instance of 'qp': type 'qp' is not a subtype of type 'b6'

TypeError: Instance of 'qp': type 'qp' is not a subtype of type 'b6'
    at Object.m (http://127.0.0.1:54975/main.dart.js:1630:3)
    at Object.os (http://127.0.0.1:54975/main.dart.js:1830:26)
    at Object.b (http://127.0.0.1:54975/main.dart.js:1835:3)
    at http://127.0.0.1:54975/main.dart.js:26687:14
    at a1I.a (http://127.0.0.1:54975/main.dart.js:3202:71)
    at a1I.$2 (http://127.0.0.1:54975/main.dart.js:3547:23)
    at TB.$0 (http://127.0.0.1:54975/main.dart.js:39207:33)
    at Tz.lp (http://127.0.0.1:54975/main.dart.js:39181:9)
    at TC.$2 (http://127.0.0.1:54975/main.dart.js:39205:15)
    at TB.$0 (http://127.0.0.1:54975/main.dart.js:39207:33)
```
Change-Id: I7e001816742ff84dad5859f83b08da86d1043ccf
Reviewed-on: https://dart-review.googlesource.com/68660
Reviewed-by: Kevin Millikin <kmillikin@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
2018-08-07 09:41:38 +00:00
Mike Fairhurst eb4b4d3699 Make loadScript() return a future, so it can be awaited in dart 2.
Currently it returns void, which cannot be awaited.

It looks like this code should indeed return a Future, though.

Change-Id: Id093ce2866b89e30a707f9c14751394211b16488
Reviewed-on: https://dart-review.googlesource.com/66404
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Mike Fairhurst <mfairhurst@google.com>
2018-07-24 19:04:26 +00:00
Ryan Macnak a0f517834e [observatory] Progress toward static mode compatibility.
Bug: https://github.com/dart-lang/sdk/issues/32503
Change-Id: Ic4390dce8874aab4aaa87fa4153aef668f28738e
Reviewed-on: https://dart-review.googlesource.com/64982
Reviewed-by: Zach Anderson <zra@google.com>
2018-07-16 17:16:33 +00:00
Ryan Macnak c95f323af2 [observatory] Progress toward static mode compatibility.
Bug: https://github.com/dart-lang/sdk/issues/32503
Change-Id: I4c3358dcc69aa26e3d296275f6ec4da22814c162
Reviewed-on: https://dart-review.googlesource.com/64820
Reviewed-by: Ben Konyi <bkonyi@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-07-13 22:37:29 +00:00
Devon Carew 188ef5e3d5 Analyze all the pkg/ code on the bots.
Bug: https://github.com/dart-lang/sdk/issues/29318
Change-Id: Iccb16ddbccbb43fa7a12eb818c2dde3a75700b97
Reviewed-on: https://dart-review.googlesource.com/64663
Commit-Queue: Devon Carew <devoncarew@google.com>
Reviewed-by: William Hesse <whesse@google.com>
2018-07-12 16:35:03 +00:00
Ryan Macnak 32522fe214 [observatory] Progress toward static mode compatibility.
Bug: https://github.com/dart-lang/sdk/issues/32503
Change-Id: I0251eb730e7781491e7d7b50d2c6c5cdf30e6352
Reviewed-on: https://dart-review.googlesource.com/64460
Commit-Queue: Ryan Macnak <rmacnak@google.com>
Reviewed-by: Zach Anderson <zra@google.com>
2018-07-11 18:14:53 +00:00
Kevin Millikin 29924c4000 In observatory use ArgumentError instead of FallThroughError
Throwing a programmer-constructed FallThroughError is not useful.  It
prints something like:

    'null': Switch case fall-through at line null.

And if you can track that down, it's confusing because it's being used
to signal things that don't have anything to do with falling through
from one switch case to the next one.  Usually, there turns out to be
no matching case in the first place so there's no possible way that
anything fell through to the next case.

Fixes https://github.com/dart-lang/sdk/issues/28189

Change-Id: I68d8aaf22c95163f87a159928f924c25c19f094e
Reviewed-on: https://dart-review.googlesource.com/62522
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Kevin Millikin <kmillikin@google.com>
2018-06-28 11:28:33 +00:00
Ryan Macnak 65a3c4443b [observatory] Update packages and remove dead dependencies.
Change-Id: I6dbf547e30a6be9a303d7fc08c9f4c024164334e
Reviewed-on: https://dart-review.googlesource.com/62200
Reviewed-by: Zach Anderson <zra@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-06-25 22:09:54 +00:00
Vyacheslav Egorov 20ca5bbb05 [vm/jit] Introduce dynamic invocation forwarders that perform type checking
This forwarders are used at dynamic call-sites and perform type checking
for all non-generic-covariant arguments. This allows to skip the same
type checks in the actual method body.

This yield on average 10% improvement in performance across the body of
benchmarks including dart2js compilation times.

Bug: https://github.com/dart-lang/sdk/issues/33257
Change-Id: If3fc94a2e0a6f496ec0633f0b379d053a54a40ca
Reviewed-on: https://dart-review.googlesource.com/61244
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Martin Kustermann <kustermann@google.com>
2018-06-25 07:27:04 +00:00
Ryan Macnak b375d69800 [observatory] When the VM is forwarding events to the Android or Fuchsia system tracers, link to the document describing how to use them.
Change-Id: I940b2d5b47a54661c5d25e6d52e714b8819d79a6
Reviewed-on: https://dart-review.googlesource.com/58601
Reviewed-by: Zach Anderson <zra@google.com>
Reviewed-by: Chinmay Garde <chinmaygarde@google.com>
Commit-Queue: Ryan Macnak <rmacnak@google.com>
2018-06-05 21:55:56 +00:00
Paul Berry b66dd3d456 Stop using generic comment syntax in observatory.
In most cases the correct fix is to simply drop the generic comment
syntax (e.g. replace "List/*<Map>*/" with "List").  We can't use the
more precise type because the runtime type is actually more general
(e.g. when processing an object that came from the JSON parser, all
lists have runtime type List<dynamic>, even if their elements happen
to be uniform).  But we can introduce more precise types when handling
substructures.

Exception: all JSON-derived maps have type Map<String, dynamic> (since
JSON maps always have string keys), so we can use a more precise type
when dealing with JSON maps.
Change-Id: I48c9dbdda97c11530978212146f74db7b43f5197
Reviewed-on: https://dart-review.googlesource.com/58320
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-06-05 18:29:26 +00:00
Paul Berry 60631b0944 Remove unnecessary casts from observatory.
Change-Id: I2ad59645471b41ce0c8530665b9dc2bcd3e56e7d
Reviewed-on: https://dart-review.googlesource.com/58321
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-06-05 15:55:00 +00:00
Alexander Aprelev a5e41681e5 Add support for expression compilation via service.
If there is registered expression compiler, VM debugger uses it to compile expressions. Otherwise, it will fallback to use kernel service compiler.
This is needed to support Flutter use case where compiler is running on developer's host machine, not on the device where VM is running.

Bug: dartbug.com/31981
Change-Id: I8bdfc8ab45a57c306169abe189f1e24e1b0bcf40
Reviewed-on: https://dart-review.googlesource.com/57520
Commit-Queue: Alexander Aprelev <aam@google.com>
Reviewed-by: Siva Annamalai <asiva@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-06-05 04:16:39 +00:00
Paul Berry 648f62a170 Rename Function to ServiceFunction, since creating a class called Function is deprecated.
Change-Id: Ia052b1663252a8786f94577626e631a66d69dff5
Reviewed-on: https://dart-review.googlesource.com/58280
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-06-04 22:02:29 +00:00
Paul Berry a518d3c6dc Use int.tryParse rather than deprecated onError parameter of int.parse.
Change-Id: I20943a59e367fa6bd328604063b4a736ec300c0e
Reviewed-on: https://dart-review.googlesource.com/58260
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-06-04 17:49:39 +00:00
Paul Berry 6ba8c711fa Observatory strong mode fix: expand the class hierarchy for debug events.
This CL adds base classes for breakpoint events (which support a
`breakpoint` getter) and async suspension events (which support an
`atAsyncSuspension` getter).  Previously these getters were accessed
through dynamic dispatch.

Change-Id: I9bc450a8988483cd0662b1dfe31b4adaf0936ff9
Reviewed-on: https://dart-review.googlesource.com/57380
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-06-01 22:43:29 +00:00
Paul Berry bef7cd354f Observatory strong mode fix: Use .nodes= instead of .children= to accommodate text nodes.
This is necessary because HtmlElement.children= requires its parameter
type to be a List<Element>, and text nodes are not elements.

Change-Id: I99c91fe060c16f02d737d904f6869b3dad19c196
Reviewed-on: https://dart-review.googlesource.com/57005
Reviewed-by: Stephen Adams <sra@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-06-01 20:39:34 +00:00
Paul Berry 9e3842d624 Observatory strong mode fix: fix type errors with onDisconnect.
The method ObservatoryApplication._switchVM calls newVM.onDisconnect
and requires the resulting future to be completed with a String.  In
normal operation, this is satisfied and we just need to change a few
static types to enforce it.  But when FakeVM was in use, the future
was completed with `this`.  Since ObservatoryApplication._switchVM is
the only call site that cares what the future is completed with, it
makes sense to just change all the types to Future<String> and modify
FakeVM accordingly.

Change-Id: Id94d27ac6a42f31ab19ccc9ad8dd270ecf4042b4
Reviewed-on: https://dart-review.googlesource.com/57400
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-05-30 20:50:24 +00:00
Paul Berry bfeb80a0c9 Observatory strong mode fixes: fix some int/double mismatches.
Change-Id: I22db86e2ecd579c165536a1178ff9eba6963735a
Reviewed-on: https://dart-review.googlesource.com/57381
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-05-30 18:10:21 +00:00
Paul Berry 7fc88c494b Observatory strong mode fix: add required calls to .toList().
Change-Id: Ie3e3d4c52c64d9fe1c4ab000315b3a959f6f336a
Reviewed-on: https://dart-review.googlesource.com/57382
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-05-30 18:08:43 +00:00
Paul Berry a40993a6af Observatory strong mode fix: Fix incorrect types in DebuggerStackElement.
Change-Id: Ib882fa965b3ce9af377e89cc3666cbde04d2d657
Reviewed-on: https://dart-review.googlesource.com/57004
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-05-29 21:42:06 +00:00
Paul Berry 0fdfc9aa3b Observatory strong mode fix: Add a needed implements clause.
Add a clause indicating that FunctionCallTreeNode (in
lib/src/sample_profile/sample_profile.dart) implements
M.FunctionCallTreeNode.  This allows the two types for `root`
inherited by FunctionCallTree to be consistent with each other: the
type inherited from CallTree<FunctionCallTreeNode> is
FunctionCallTreeNode whereas the type inherited from
M.FunctionCallTree is M.FunctionCallTreeNode.

Change-Id: I0b48c57f84681a7d40afadfb59c72501cfe38577
Reviewed-on: https://dart-review.googlesource.com/57002
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-05-29 21:12:29 +00:00
Paul Berry c09e0121f7 Observatory strong mode fixes: add explicit downcasts to button onClick callbacks.
Since the downcast is explicit (using "as") the type will be checked
even in unchecked mode, so technically there is a slight risk of
breakage.  But since the callback is so near the creation of the
ButtonElement, I'm not concerned.  Also, I'm not concerned about the
performance penalty of the explicit downcast because the cost is only
paid once per user click.

Change-Id: I64fbb442985f6ba6f745f665b36a3321498025e4
Reviewed-on: https://dart-review.googlesource.com/56704
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-05-25 19:38:13 +00:00
Paul Berry a5bf688622 Observatory strong mode fix: Avoid a String/Uri type mismatch.
Change-Id: Ie4871b7467bd00e594f7df397909690461fe358a
Reviewed-on: https://dart-review.googlesource.com/56702
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-05-25 19:30:18 +00:00
Paul Berry 1b0c2f4507 Observatory strong mode fix: Add VM.target getter.
This allows code to access a VM object's target without having to
downcast it to a more specific type.

Change-Id: I42f329e205c2da0137be2440f0d3088a7137bc55
Reviewed-on: https://dart-review.googlesource.com/56703
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-05-25 19:30:08 +00:00
Paul Berry 08d0dcb4b0 Observatory strong mode fixes: specify some list literal types.
In some cases we need to specify a type because the inferred type
would be too specific.  For example, in the code:

    final content = [new SampleBufferControlElement(...)];
    ...
    content.addAll([new BRElement(), ...]);

Strong mode would infer a type of `List<SampleBufferControlElement>`
for `content`, making it impossible to add other kinds of HTML
elements to the list later.  So we have to specify explicitly that the
list element type is meant to be `HTMLElement`.

In other cases we need to specify a type because the inferred type is
too general.  For example, in the code:

    Future<List<String>> complete(...) {
      var result = [];
      ...add values of type String to `result`...
      return new Future.value(result);
    }

Strong mode would infer a type of `List<dynamic>` for `result`, making
it impossible to enclose in a `Future<List<String>>`.  So we have to
specify explicitly that the list element type is meant to be `String`.

Change-Id: I1b1c884529de2775898dfff800d250cd10629811
Reviewed-on: https://dart-review.googlesource.com/56700
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-05-25 19:22:03 +00:00
Paul Berry 462e350a6a Observatory strong mode fixes: Change types of InstanceMock/Instance members.
The types now correspond in the two classes, so we avoid invalid
override errors.

Change-Id: Iceeb324e6adf7573ae39d7250184f7eb58656498
Reviewed-on: https://dart-review.googlesource.com/56021
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-05-25 19:02:03 +00:00
Paul Berry 2d527801b2 Observatory strong mode fixes: fix several type annotations.
Change-Id: I647480f1f03be1d182afe98f6aa22c43a937aba3
Reviewed-on: https://dart-review.googlesource.com/56028
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-05-25 12:42:11 +00:00
Paul Berry 0125a5a235 Observatory strong mode fixes: Fix callback parameter types using implicit casts.
Change-Id: I0ee40677e13f82ca94238b98dcb50188063f9260
Reviewed-on: https://dart-review.googlesource.com/56026
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-05-25 12:32:01 +00:00
Paul Berry c85b2fc7be Observatory strong mode fixes: Fix an int/double type mismatch
Change-Id: I78cfc41dc328a40ba7650a492235d51663132130
Reviewed-on: https://dart-review.googlesource.com/56027
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-05-25 12:17:21 +00:00
Paul Berry 3fb22040cb Observatory strong mode fixes: make iteration types more specific.
Change-Id: I8031625bd676aadb0bf20e3b2642f0b7e84af747
Reviewed-on: https://dart-review.googlesource.com/56025
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-05-25 12:15:41 +00:00
Paul Berry 2165d2d797 Observatory strong mode fixes: safe uses of dynamic and covariant.
This CL makes the following changes, which should be safe since they
don't affect Dart 1.0 semantics:

- Explicitly declare the types of certain variables as `dynamic` to
  avoid strong mode inferring a type that leads to errors.

- Explicitly cast certain expressions to `dynamic` to allow access to
  members that are dynamically known to be present.

- Add `covariant` annotation to method parameters that are a subtype
  of the corresponding parameter in the base class.

Change-Id: Ibefe4d9591f70ea954373ca4d521bc54179cca9b
Reviewed-on: https://dart-review.googlesource.com/55900
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-05-25 11:54:20 +00:00
Paul Berry 7b3c3991ea Observatory strong mode fixes: add implicit downcasts.
Change-Id: I17d10ec4c69f9d3fa1cda3ec11df3e96749ade29
Reviewed-on: https://dart-review.googlesource.com/56022
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-05-25 05:20:25 +00:00
Paul Berry d17859ca11 Observatory strong mode fixes: make callback parameter types more general.
This CL addresses a code pattern where a method expects its parameter
to have a certain type, but that method is torn off and passed as a
callback to another method expecting its parameter type to be more
general.  For example:

    void f(int i) { ... }
    void g(void callback(Object o)) { ... }
    void h() {
      g(f); // Error: () -> int is not a subtype of () -> Object
    }

This is a strong mode error because the type system cannot guarantee
that the value pased to f will be an int.  The solution is to broaden
the type of the callback parameter so that it matches the type
expected for the callback.  In most cases, we insert an implicit
downcast (by reassigning the parameter to a local variable with the
expected type), which in Dart 2.0 semantics will result in a runtime
check (similar to what happens in Dart 1.0 checked mode).

Since the downcasts are implicit, the Dart 1.0 semantics are
unchanged, so this should be a safe change.

Change-Id: I9583ea194343b89b39305c9796cfad299a47943f
Reviewed-on: https://dart-review.googlesource.com/55907
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Ryan Macnak <rmacnak@google.com>
2018-05-24 23:07:55 +00:00
Paul Berry bbb8905075 Observatory strong mode fixes: specify type argument to .map when not inferable.
This ensures that the resulting Iterable will have the proper type
when run with strong mode semantics.

In Dart 1.0 semantics, the type argument to .map is ignored, so this
change should be safe.

Change-Id: I34924bc7e803b1520af7d174cfe80f5be6b7ac0f
Reviewed-on: https://dart-review.googlesource.com/55908
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-05-21 20:28:48 +00:00
Paul Berry 841a91b3a0 Observatory strong mode fixes: Add abstract Location.toUserString to Location.
This is necessary because many call sites invoke toUserString without
first casting to one of the derived classes.

This should be safe since both derived classes (SourceLocation and
UnresolvedSourceLocation) contain a definition of toUserString.

Change-Id: I69eeda326883d87fc4e8cedd732881d250cae8cb
Reviewed-on: https://dart-review.googlesource.com/55909
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-05-21 20:07:39 +00:00
Paul Berry aad3270ab8 Observatory strong mode fixes: fix C-style parameter declarations.
This CL fixes some cases where Observatory mistakenly tried to use a
C-style parameter declaration, e.g.

    void foo(String);

The intent is to declare the parameter to have type `String`, but Dart
interprets the parameter as having *name* `String` and type `dynamic`.

In most cases the fix applies to abstract method declarations, whose
types aren't semantically relevant in Dart 1.0, so these parts of the
CL should be safe.

In one case it applies to a typedef, IsConnectedVMTargetDelegate.  The
only use of this typedef is as the type of
TargetRepository._isConnectedVMTarget, whose value is always the
static function ObservatoryApplication.isConnectedVMTarget.  The type
of ObservatoryApplication.isConnectedVMTarget matches the typedef
(according to Dart 1.0 rules) both before and after the change, so
this should be safe as well.

Change-Id: Ia67f5f14d5a012ccb8a44cbd88a8233f8c9ad171
Reviewed-on: https://dart-review.googlesource.com/55901
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-05-21 19:58:38 +00:00
Paul Berry ea4d10915c Observatory strong mode fixes: make return types more specific.
This CL addresses a code pattern where a method has a more general
return type than it needs, causing a strong mode error at the site
where the method is called or torn off.  For example:

    Object f() => 'x';
    void g(String callback()) { ... }
    void h() {
      g(f); // Error: () -> Object is not a subtype of () -> String
    }

The solution is to tighen up the return type.  In all cases in this
CL, it is obvious from the method definition that the value returned
at runtime will satisfy the tighter return type, so this should be a
safe change.

Change-Id: Ifbd476d969274342653d2619c1c81e2e014817c4
Reviewed-on: https://dart-review.googlesource.com/55904
Reviewed-by: Ryan Macnak <rmacnak@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-05-21 19:52:38 +00:00
Martin Kustermann a6b6d6a608 [VM] Remove converted closure function code from the VM
This code is unused and has been bit-rotting for some time, so we'll
remove support for the kVector{Create,Copy,Get,Set}/kClosureCreation
kernel expressions.

Change-Id: Ie83d35b6d2cd533f3c08084631c5faf0c14ff122
Reviewed-on: https://dart-review.googlesource.com/53940
Commit-Queue: Martin Kustermann <kustermann@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-05-07 12:25:50 +00:00
Aske Simon Christensen 9c2fcedaf4 Error on missing method implementation in non-abstract class
Bug: https://github.com/dart-lang/sdk/issues/32013

Change-Id: I163a84e70e94852a05ce99b07ec883c610ea788c
Reviewed-on: https://dart-review.googlesource.com/52320
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2018-04-24 13:07:54 +00:00