Commit Graph

19280 Commits

Author SHA1 Message Date
Konstantin Shcheglov 48a1504b2f Stop reporting CONFLICTING_INSTANCE_GETTER_AND_SUPERCLASS_MEMBER and CONFLICTING_INSTANCE_SETTER_AND_SUPERCLASS_MEMBER.
These errors were removed from the spec.
See also https://github.com/dart-lang/sdk/issues/33235

R=brianwilkerson@google.com

Bug: https://github.com/dart-lang/sdk/issues/34331
Change-Id: Ibc675aa48165300ddac32a8d6ddef4d84d41952a
Reviewed-on: https://dart-review.googlesource.com/72903
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-09-04 20:29:06 +00:00
Kevin Millikin 9bdf2489b5 Signal errors and warnings for invalid returns
Implement the feature spec for checking returns against inferred
function return types:

https://github.com/dart-lang/sdk/blob/master/docs/language/informal/invalid_returns.md

with the change that an invalid return without a subexpression is
a warning, not an error.  This is because it is a warning in the
analyzer and it would be a breaking change to turn it into an
error.

The check for valid returns is moved to exactly where we handle
returns, rather than in ensureAssignable which is used as a
helper in a lot of places. A bug in type inference was fixed: we
would use `void` for the type of return without a subexpression
instead of `null`.  To accommodate that we would use a
non-standard subtyping relation for returns.  This could lead to
us inferring a return type of `void` in cases where we should
not.

Change-Id: Iee9ece9c722f47efa305f49490d3022d0bbb9f44
Reviewed-on: https://dart-review.googlesource.com/72403
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2018-09-04 16:50:51 +00:00
Aske Simon Christensen 35eacd1afc Type arguments to a constructor is an error.
Fixes https://github.com/dart-lang/sdk/issues/34159

Change-Id: Ib4cca43f4181f2557560fa45ca41dd059c8b5b06
Reviewed-on: https://dart-review.googlesource.com/71521
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
2018-09-04 12:06:14 +00:00
William Hesse b9de95da29 Mark bigint_parse_radix_test as flaky crash on reload
Bug: https://github.com/dart-lang/sdk/issues/34361
Change-Id: Id77c3f4ca4a70317ee74ed937f6a12c731206415
Reviewed-on: https://dart-review.googlesource.com/72801
Reviewed-by: Jonas Termansen <sortie@google.com>
2018-09-04 11:22:46 +00:00
Lasse R.H. Nielsen 864622a76f Add tests for int literal as double value.
Change-Id: Ic4f76280f50f8aa82228cf9e694881eff3edcaef
Reviewed-on: https://dart-review.googlesource.com/61520
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Erik Ernst <eernst@google.com>
2018-09-04 10:59:48 +00:00
Jens Johansen 40864cc698 Fasta: Signature change with and without noSuchMethod
The below code is not okay, even if we add a noSuchMethod to C.

```
class B {
  foo(int x) => x;
}

class C extends B {
  foo(int x, {int y});
}
```

Issue #32660.

Change-Id: I1ace4443c3732fdd5faefa50e0d2cb68023e97c4
Reviewed-on: https://dart-review.googlesource.com/72106
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-09-04 10:21:10 +00:00
Jens Johansen 015840d31f Fasta: Wrong number of type parameters is an error
E.g. `new Map<String>` is now reported as an error.

Note that this does not add a check for whether correct types are given,
so e.g.

```
class Foo<X extends num> {}
main() {
  new Foo<String>();
}
```

is not caught by this fix.

Fixes #32972, #32281.

Change-Id: I57513b5c13865a828890775c8e14f7433d00bdbe
Reviewed-on: https://dart-review.googlesource.com/72382
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-09-04 10:10:32 +00:00
Vyacheslav Egorov d01d6f454c [vm] Fix a bug in the specialization of implicit setters
CallSpecializer::TryInlineInstanceSetter was using IsReceiver to determine
type check could be skipped. However it is incorrect to use IsReceiver,
because it uses SSA notion of the receiver - rather than a syntactic
notion and all strong mode guarantees apply at syntactic level.

Additionally this CL expands support for exactness tracking to PropertySet
operations and uses it to eliminate checks on setters.

Change-Id: Idce559c4ca4c88f5788d3b6b9955b5af076bd7eb
Reviewed-on: https://dart-review.googlesource.com/72442
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Samir Jindel <sjindel@google.com>
2018-09-03 13:43:41 +00:00
Daniel Hillerström a56203041f Checks whether the type of a switch expression is assignable to the
types of its case expressions.

Resolves the first part of
https://github.com/dart-lang/sdk/issues/34207. According to the
language team the second part may soon become irrelevant.

Change-Id: Ifce38f2a62c293156dafa94f16799d5a126c6b9c
Reviewed-on: https://dart-review.googlesource.com/71981
Commit-Queue: Daniel Hillerström <hillerstrom@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2018-09-03 11:03:56 +00:00
Jenny Messerly 1a6a334cd7 fix #34273, dartdevk should use the default bound for generic functions
When dynamically calling a generic function or method without passing
any explicit type arguments, the default bounds are used. The default
should be `dynamic` unless an explicit bound was provided for the type
parameter.

Change-Id: I82f7166303f936adbecedd0c633b518f2700def4
Reviewed-on: https://dart-review.googlesource.com/72081
Commit-Queue: Jenny Messerly <jmesserly@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
2018-09-01 01:48:21 +00:00
Samir Jindel b38a49e81c Revert "[vm] Skip bounds checks on invocation of partially instantiated closures."
This reverts commit 5e34333c12.

Reason for revert: Broke several bots.

Original change's description:
> [vm] Skip bounds checks on invocation of partially instantiated closures.
> 
> Change-Id: I042607b6c255b20d8071dd51439a50bfd4c3bee7
> Reviewed-on: https://dart-review.googlesource.com/72460
> Commit-Queue: Samir Jindel <sjindel@google.com>
> Reviewed-by: Vyacheslav Egorov <vegorov@google.com>

TBR=vegorov@google.com,sjindel@google.com

Change-Id: Ie52f0da8e1a52d48dabff458bf391e3cb7f11d16
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/72402
Reviewed-by: Samir Jindel <sjindel@google.com>
Commit-Queue: Samir Jindel <sjindel@google.com>
2018-08-31 16:05:41 +00:00
Samir Jindel 5e34333c12 [vm] Skip bounds checks on invocation of partially instantiated closures.
Change-Id: I042607b6c255b20d8071dd51439a50bfd4c3bee7
Reviewed-on: https://dart-review.googlesource.com/72460
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-08-31 15:09:06 +00:00
Jens Johansen 33704fa75f Fasta: Instance field cannot be const
Fixes #32326.

Change-Id: Idef32a842a68c5c9ee58caff7b6e731204f033b6
Reviewed-on: https://dart-review.googlesource.com/72041
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-08-31 10:28:19 +00:00
Samir Jindel dbe868de02 [vm] Correct semantics of bounds-checks on partial instantiation.
Fixes #34267.

Change-Id: Ieb557e186aa457bac3b99b6817050bde8f8e142f
Reviewed-on: https://dart-review.googlesource.com/72161
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-08-31 10:13:51 +00:00
Samir Jindel 3603af3ea5 [vm] Instantiate type parameter bounds on closures.
Fixes #34308.

Change-Id: I7d998daa752ada13368631fc327a5c3595ec406c
Reviewed-on: https://dart-review.googlesource.com/72160
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
2018-08-31 09:56:34 +00:00
Kevin Millikin 9803d5c786 Signal an error when invoking a non-function
When invoking an expression whose static type is not a function type,
signal an error.  However, allow invocations of expressions with
static type `dynamic` or `Function`.  Fixes #32975.

Change-Id: Ia54d8df650076ad5c9c9c3a2c6f79ea31acbbbfe
Reviewed-on: https://dart-review.googlesource.com/72082
Commit-Queue: Kevin Millikin <kmillikin@google.com>
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
2018-08-31 02:30:46 +00:00
Konstantin Shcheglov 02b2deefd6 Remove StaticWarningCode.isStrongModeError flag.
It is not used internally outside Analyzer itself.

R=brianwilkerson@google.com, paulberry@google.com

Change-Id: Iec2b45ebaeb49400e9f61a137a85170657856016
Reviewed-on: https://dart-review.googlesource.com/72300
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2018-08-31 01:19:24 +00:00
Konstantin Shcheglov db8b6bc549 Don't report StaticWarningCode.CONFLICTING_DART_IMPORT.
The warning was removed from the language specification.

Plus some optimization for import scope and conflicts.

R=brianwilkerson@google.com, paulberry@google.com

Change-Id: I78b6924f9095dce89324f4093e78c948611f8493
Reviewed-on: https://dart-review.googlesource.com/72064
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-08-30 20:56:41 +00:00
William Hesse 0999a7b75e Remove special handling of _htmltest.html tests.
This removes the special category of html tests which was added in 2014, in cl
https://codereview.chromium.org//695893002

Change-Id: I42d2992e79e7b508465a7fffb4864b545f3af452
Reviewed-on: https://dart-review.googlesource.com/72000
Reviewed-by: Jonas Termansen <sortie@google.com>
Reviewed-by: Vijay Menon <vsm@google.com>
2018-08-30 14:37:57 +00:00
Daniel Hillerström 2f77de53e2 Revert "Enables arity check for overridden methods inherited from a mixin."
This reverts commit 03c7184cca.

Reason for revert: Flutter doesn't build with after this CL because the following (kind of) program

  abstract class RenderObject {
  String toString({int minLevel}) => "foo";
  }
  abstract class ContainerRenderObjectMixin extends RenderObject {}
  abstract class RenderBoxContainerDefaultsMixin implements 
  ContainerRenderObjectMixin {}

is wrongfully rejected. In patching this, I stumbled upon what seems to be bug in Fasta where some concrete classes arising from mixed in applications are marked as abstract, which causes the patch to produce false-positives. This needs some more investigation.

Original change's description:
> Enables arity check for overridden methods inherited from a mixin.
> 
> The return type and parameter types checks are still disabled for
> mixins as there is an issue with type parameters being uninstantiated
> in mixin applications which causes the two checks to produce
> false-positives. As a result the SDK fails to compile with the two
> checks enabled because the libraries (such as collections) makes
> extensive use of mixin application with generic types. I've opened a
> separate ticket to track this issue [c.f. https://github.com/dart-lang/sdk/issues/34285].
> 
> Furthermore this CL abstracts the arity check, return type check, and
> method parameter type check in checkMethodOverride to make it easier
> to understand the logic of the method.
> 
> Closes https://github.com/dart-lang/sdk/issues/34235 and closes https://github.com/dart-lang/sdk/issues/32014
> 
> Change-Id: Iae224926c2e99e6e89ccc3c19ec4bc7919ee48a5
> Reviewed-on: https://dart-review.googlesource.com/71781
> Commit-Queue: Daniel Hillerström <hillerstrom@google.com>
> Reviewed-by: Aske Simon Christensen <askesc@google.com>

TBR=askesc@google.com,hillerstrom@google.com

Change-Id: Idee6f53c2d6a17ea8a4103872b1183c01e4d30ce
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://dart-review.googlesource.com/72108
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
Commit-Queue: Daniel Hillerström <hillerstrom@google.com>
2018-08-30 13:00:16 +00:00
Vyacheslav Egorov b9a2e1026b [vm] Fix order of operations in Code::FinalizeCode
There should be no GCs between Instructions::New and
all write into the instructions object, because GC indiscriminately
write protects all code objects at the end of the GC.

In the previous version of the code assembler->GetCodeComments would
potentially trigger a GC and the code would crash trying to write
pointers into the code.

Also move FlushICache to the point after everything is written
into the code object.

Fixes #34030

Change-Id: I83742715f825f897a8612dda5ef7352c572517ee
Reviewed-on: https://dart-review.googlesource.com/72103
Reviewed-by: Siva Annamalai <asiva@google.com>
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
2018-08-30 12:20:19 +00:00
Aske Simon Christensen ac77419209 Status file cleanup for dart2js.
Removed all sections labeled $compiler == dart2js and !$fasta.

Removed $fasta from all sections with $compiler == dart2js and merged
with existing sections as appropriate.

Some additional cleanup and normalization.

Change-Id: I8b93283a2cce22ce60e29d364c8d0e70dccbb6e3
Reviewed-on: https://dart-review.googlesource.com/71840
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2018-08-30 10:28:41 +00:00
Daniel Hillerström 03c7184cca Enables arity check for overridden methods inherited from a mixin.
The return type and parameter types checks are still disabled for
mixins as there is an issue with type parameters being uninstantiated
in mixin applications which causes the two checks to produce
false-positives. As a result the SDK fails to compile with the two
checks enabled because the libraries (such as collections) makes
extensive use of mixin application with generic types. I've opened a
separate ticket to track this issue [c.f. https://github.com/dart-lang/sdk/issues/34285].

Furthermore this CL abstracts the arity check, return type check, and
method parameter type check in checkMethodOverride to make it easier
to understand the logic of the method.

Closes https://github.com/dart-lang/sdk/issues/34235 and closes https://github.com/dart-lang/sdk/issues/32014

Change-Id: Iae224926c2e99e6e89ccc3c19ec4bc7919ee48a5
Reviewed-on: https://dart-review.googlesource.com/71781
Commit-Queue: Daniel Hillerström <hillerstrom@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2018-08-30 10:01:19 +00:00
Daniel Hillerström 73a35c9937 Checks whether a constant factory has a constant target.
Closes https://github.com/dart-lang/sdk/issues/34161

Change-Id: Ie5eb4d3307e0fd389bcd25b8c548b6dff64633ab
Reviewed-on: https://dart-review.googlesource.com/71300
Commit-Queue: Daniel Hillerström <hillerstrom@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2018-08-30 08:37:02 +00:00
Johnni Winther 263931bd33 Small cleanups to avoid warnings in IntelliJ
Change-Id: I02214d21a910def67184e49765af3020848389d9
Reviewed-on: https://dart-review.googlesource.com/71941
Reviewed-by: Stephen Adams <sra@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2018-08-30 06:47:38 +00:00
Jenny Messerly fb67619728 fix #29914, DDC shouldn't create super accessor for an abstract one
When the superclass has a getter/setter pair, and the subclass only
overrides one of the pair, DDC will generate the other one to forward
to the superclass. However these should not be generated for abstract
accessors. This patch fixes the compiler so it skips abstract accessors.

Change-Id: I60fa83b57db2e42ab47b7f4f3c28ef2a56e324ec
Reviewed-on: https://dart-review.googlesource.com/72073
Reviewed-by: Vijay Menon <vsm@google.com>
Commit-Queue: Jenny Messerly <jmesserly@google.com>
2018-08-30 00:39:13 +00:00
Jenny Messerly 14d3249567 fix dartdevc to be robust if JS interop classes are not found
If a JS class is not found (because it's not loaded yet), dartdevc
should handle this gracefully. However the code assumed that the class
would not be nested in a module that itself has not been loaded. That's
fixed in this change.

Change-Id: I2de8f4b85e8063dea31ea257aca9721702c6ea7a
Reviewed-on: https://dart-review.googlesource.com/72065
Reviewed-by: Vijay Menon <vsm@google.com>
Commit-Queue: Jenny Messerly <jmesserly@google.com>
2018-08-30 00:38:08 +00:00
Devon Carew 87bbceb3f1 More cleanup of analyzer status file predicates.
Change-Id: I047be4db04227d406ade3f206478d382e810cdd4
Reviewed-on: https://dart-review.googlesource.com/72063
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
2018-08-29 22:48:29 +00:00
Régis Crelier 2efba288f3 [Status files] Update status for standalone_2 tests in bytecode mode.
Change-Id: Ie467294733347c2b7794554c574d276baf733b29
Reviewed-on: https://dart-review.googlesource.com/72066
Reviewed-by: Alexander Markov <alexmarkov@google.com>
Commit-Queue: Régis Crelier <regis@google.com>
2018-08-29 22:03:56 +00:00
Devon Carew 0e908e9520 Simplify the language_2_analyzer.status status file.
Change-Id: Iad994ad10262f8ac73d8498fada8ff33d0ee4fd3
Reviewed-on: https://dart-review.googlesource.com/71926
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
2018-08-29 18:31:12 +00:00
Aske Simon Christensen 94dabdaae7 Error when importing a part
Fixes https://github.com/dart-lang/sdk/issues/33650

Change-Id: I2fb5f4bf7c20309c2da9660911b7ce2088e7efea
Reviewed-on: https://dart-review.googlesource.com/71820
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Peter von der Ahé <ahe@google.com>
2018-08-29 12:19:17 +00:00
Aske Simon Christensen cf2daf486f Test of dynamic argument type check for redirecting factories.
Verify that dynamic type checks are inserted to check arguments to
redirecting factories against the redirector, even when they would
be valid arguments to the redirectee.

Closes https://github.com/dart-lang/sdk/issues/31590

Change-Id: Ic439fd1e125ae8ae156e611402782413600de98e
Reviewed-on: https://dart-review.googlesource.com/71860
Reviewed-by: Erik Ernst <eernst@google.com>
Commit-Queue: Aske Simon Christensen <askesc@google.com>
2018-08-29 11:50:11 +00:00
Alexander Markov dbbf0880d3 [vm/compiler] Fix canonicalization of left shift
Fixes https://github.com/dart-lang/sdk/issues/34288

Change-Id: Ie391fc28047a5b963dcc239cf196473e70c067b0
Reviewed-on: https://dart-review.googlesource.com/71881
Commit-Queue: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-08-29 10:18:01 +00:00
Johnni Winther 760a9690c2 Remove tests irrelevant for Dart 2
Change-Id: Iedbab2ce11d7446ce28546f06ad97fd909f389c6
Reviewed-on: https://dart-review.googlesource.com/71404
Reviewed-by: Stephen Adams <sra@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2018-08-29 07:29:38 +00:00
Johnni Winther 185eec12a6 Avoid crash on falsely enqueued .call methods.
Change-Id: Ib58b02eecfc697f70e74cbb9f5e5816fb936a31b
Reviewed-on: https://dart-review.googlesource.com/71400
Reviewed-by: Stephen Adams <sra@google.com>
2018-08-29 07:29:38 +00:00
Konstantin Shcheglov 1b8f3026bf Remove most of isStrongModeError: false, update language_2 tests.
https://github.com/dart-lang/sdk/issues/33022
https://github.com/dart-lang/sdk/issues/28823
https://github.com/dart-lang/sdk/issues/11124

Change-Id: I44427cdab25aae356ec89d677fa142d23d7b42c7
Reviewed-on: https://dart-review.googlesource.com/71428
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
2018-08-29 02:06:45 +00:00
Alexander Markov cc62869910 [Status files] Update status for passing corelib_2 tests in bytecode mode
Change-Id: Id4929c771ab07054d05288de95eade1a15931454
Reviewed-on: https://dart-review.googlesource.com/71888
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-08-29 00:18:15 +00:00
Janice Collins f40ff153a9 Enable --use-fasta-parser with the analyzer by default.
Based on Devon's change at:

https://dart-review.googlesource.com/c/sdk/+/67090

Change-Id: I80b7943826e248bf37d9bbbb769330d24b0dd6ae
Reviewed-on: https://dart-review.googlesource.com/70160
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Devon Carew <devoncarew@google.com>
Commit-Queue: Janice Collins <jcollins@google.com>
2018-08-28 19:29:17 +00:00
Samir Jindel 60757d0873 [vm/kernel] Fix bug with optimization of this-invocations.
Fixes #34268.

Change-Id: Ie6a70f80d4e01d83e0381412c1c908d241e33ecd
Reviewed-on: https://dart-review.googlesource.com/71640
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
2018-08-28 12:22:20 +00:00
Lasse Reichstein Holst Nielsen edd6b75a05 Add missing method to UnmodifiableMapMixin.
Fixes 34256
BUG= http://dartbug.com/34256

Change-Id: I780368176b0111130bee1b5aae1f5228eabfa16f
Reviewed-on: https://dart-review.googlesource.com/71460
Reviewed-by: Nate Bosch <nbosch@google.com>
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
2018-08-28 05:11:12 +00:00
Samir Jindel c691a85b92 [vm/kernel] Fix type arguments handling in IL construction.
Thanks to Alex Markov for the test case!

Fixes #34269.

Change-Id: I66371532b40984c58332ee43c99e744d746ecfae
Reviewed-on: https://dart-review.googlesource.com/71540
Commit-Queue: Samir Jindel <sjindel@google.com>
Reviewed-by: Vyacheslav Egorov <vegorov@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
2018-08-27 19:39:27 +00:00
Alexander Markov 52d33f0d5d [vm/kernel/bytecode] Support partially instantiated closures in bytecode
Generic closures should take delayed type arguments into account when
initializing type arguments in prologue.

Fixes language_2/instantiate_tearoff_test in bytecode mode.

Change-Id: I0ab07e759f3372ae9143a48f0b8b0fe4fab8a51a
Reviewed-on: https://dart-review.googlesource.com/71432
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Régis Crelier <regis@google.com>
Reviewed-by: Samir Jindel <sjindel@google.com>
2018-08-27 18:13:56 +00:00
Alexander Markov ff8a989e55 [vm/bytecode] Update status for a test with missing compile-time error
Negative test cases

  generic_function_type_as_type_argument_test/01
  generic_function_type_as_type_argument_test/02

rely on a compile-time error, which is still missing in CFE.
Unlike default VM, bytecode pipeline does not flag this error.

Change-Id: I3c052b5ca6013ab0728ffc234b5ffbe2fddfec5d
Reviewed-on: https://dart-review.googlesource.com/71600
Reviewed-by: Régis Crelier <regis@google.com>
Commit-Queue: Alexander Markov <alexmarkov@google.com>
2018-08-27 17:59:10 +00:00
Daniel Hillerström 8b92fe3bbd Checks whether a class extends or implements FutureOr.
According to the specification (§10.9) it is a compile-time error to
extend, implement, or use FutureOr as a mixin.

Expands the "multiple implements" check to include a test for whether
a class attempts to extend or implement the 'FutureOr' class.

The mixin case is indirectly caught by another syntactic check for
mixed in types (c.f. checkSemantics method in source_loader.dart). It
verifies whether a mixin has zero constructors. Since FutureOr has a
constructor the check fails. This is technically enough to meet the
specification, but it leads to a confusing error message for this
particular case. To improve the quality of the error message, we may
want to merge some of the mixed in check into checkSupertypes in
kernel_class_builder.dart.

Closes https://github.com/dart-lang/sdk/issues/33744

Change-Id: I887ea9431fd50059399937f4236523ed917e3673
Reviewed-on: https://dart-review.googlesource.com/71141
Commit-Queue: Daniel Hillerström <hillerstrom@google.com>
Reviewed-by: Aske Simon Christensen <askesc@google.com>
2018-08-27 08:31:15 +00:00
Lasse Reichstein Holst Nielsen 72e6353c32 Make Stream.fromIterable handle errors in current and send a done.
The code didn't handle `iterator.current` throwing, and it didn't send a done
event after `iterator.moveNext()` throws.

Fixes #33431.

Bug: http://dartbug.com/33431
Change-Id: Ic8f7b5d52793ea3db30480e7aa69d01a86e93772
Reviewed-on: https://dart-review.googlesource.com/63841
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
2018-08-27 08:06:54 +00:00
Konstantin Shcheglov 07fb992964 Report CompileTimeErrorCode.FOR_IN_WITH_CONST_VARIABLE
R=brianwilkerson@google.com, paulberry@google.com

Bug: https://github.com/dart-lang/sdk/issues/25161
Change-Id: I27ebc09fd9fcd6d6d992268f158e80477c41d042
Reviewed-on: https://dart-review.googlesource.com/71424
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-08-26 20:09:46 +00:00
Konstantin Shcheglov 04e2ada09b Report StaticTypeWarningCode.WRONG_NUMBER_OF_TYPE_ARGUMENTS for dynamic and type parmaeters.
R=brianwilkerson@google.com, paulberry@google.com

Bug: https://github.com/dart-lang/sdk/issues/28813
Change-Id: Iae43c0bb913bfd06fa09ddeacd6fdb8f81eccf9a
Reviewed-on: https://dart-review.googlesource.com/71423
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2018-08-26 03:42:31 +00:00
Dan Rubel aa6945d5e9 First cut basic mixin declaration parsing support
... with parser recovery added in subsequent CLs.

Change-Id: I7a73e8e2a4dee961920fe9854bcd108bb1041b20
Reviewed-on: https://dart-review.googlesource.com/70882
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
2018-08-24 21:58:55 +00:00
Paul Berry 3d27982419 Add a language_2 test for invalid assignment to postfix increment.
Prior to c95ef874aa, case 02 crashed the
front end.  Prior to f074f3c120, case 01
crashed analyzer/FE integration.  Prior to
a94e43af7c, cases 02 and 03 crashed
analyzer/FE integration.  So it seems worth adding a test to make sure
we don't regress.

Change-Id: I0e1af7d9ed397d40dd1aebab3ff919999379d824
Reviewed-on: https://dart-review.googlesource.com/71369
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-08-24 18:29:14 +00:00
Paul Berry d2a4358bef Add a language_2 test reproducing #34235.
Change-Id: Icaf6329729a17b20a591ae6e9b8bf7c0d2e21265
Reviewed-on: https://dart-review.googlesource.com/71368
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Daniel Hillerström <hillerstrom@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2018-08-24 18:27:09 +00:00