Commit Graph

29 Commits

Author SHA1 Message Date
Lasse R.H. Nielsen 2c36db9b0a Deprecate IntegerDivisionByZeroException.
Deprecates the class and makes it implement `Error` (more specifically
`UnsupportedError`).
Code throwing `IntegerDivisionByZeroException` should be migrated to
throwing `unsupportedError` directly, code catching the exception class
should start catching `UnsupportedError` immediately (or reconsider why
they are catching at all).

Integer division by zero also covers other ways that a double division
can give a non-number result (any infinity or NaN result of the division prior to calling `truncate()` on the result, will cause `~/` to throw).

Fixes #46776

Bug: https://github.com/dart-lang/sdk/issues/46776
Change-Id: Idf2657153dd16542e72c6ba921f587dd9fc9032a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/208643
Reviewed-by: Nate Bosch <nbosch@google.com>
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
2021-10-19 16:07:52 +00:00
Paul Berry fad52e3388 Fix name of ParserErrorCode.TYPE_PARAMETER_ON_OPERATOR
The name being passed to the constructor didn't match the name of the
declaration.  I chose to favor the name of the declaration, since it
more closely matched the similar error
`ParserErrorCode.TYPE_PARAMETER_ON_CONSTRUCTOR`.

Change-Id: I74e3c2a6411db85695ef6d9b4851602a29209a09
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/214820
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-09-28 18:18:42 +00:00
Alexander Markov 16e8dc257e [vm] Faster double.floor()/ceil()/truncate() in AOT mode (x64, arm64)
1) double.truncate() now simply calls toInt(), omitting
truncateToDouble() call.

2) double.floor() and ceil() are now intrinsified on arm64 and AOT/x64
and generated using DoubleToInteger instruction.

3) DoubleToInteger instruction is extended to support floor and ceil.
On arm64 DoubleToInteger is implemented using fcvtms and fcvtps
instructions. On x64 DoubleToInteger is implemented using roundsd
under a check if it is supported (with a fallback to a stub and a
runtime call).

AOT/x64:
Before: BenchFloor(RunTime): 318.82148549569655 us.
After:  BenchFloor(RunTime): 133.29430189936687 us.

TEST=ci
Closes https://github.com/dart-lang/sdk/issues/46876
Closes https://github.com/dart-lang/sdk/issues/46650

Change-Id: I16ca18faf97954f8e8e25f0b72a2bbfac5bdc672
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/212381
Commit-Queue: Alexander Markov <alexmarkov@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
2021-09-07 19:52:04 +00:00
Lasse R.H. Nielsen 42238ecfb8 Reland "Add some operator based tests."
This is a reland of 8a57112091

Original change's description:
> Add some operator based tests.
>
> Change-Id: Id9aa12854621eab68227b64bebf507f25b07ea1e
> Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/154683
> Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
> Reviewed-by: Johnni Winther <johnniwinther@google.com>

Change-Id: I69f9810d7539b309ee7c1b87c13cd4153c590f2a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/205263
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
2021-06-29 16:28:48 +00:00
Lasse R.H. Nielsen 5eb5d78a63 Revert "Add some operator based tests."
This reverts commit 8a57112091.

Reason for revert: Wasn't calling the new test function at all.

Change-Id: Ibb49de7a6f40b740d8a70200babce76811d2bf61
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/205262
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
2021-06-29 10:25:53 +00:00
Lasse R.H. Nielsen 8a57112091 Add some operator based tests.
Change-Id: Id9aa12854621eab68227b64bebf507f25b07ea1e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/154683
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2021-06-28 15:06:52 +00:00
Lasse R.H. Nielsen a5e18113f3 Remove references to triple-shift and generic-metadata experiments.
TEST= removed flags from test. No behavior should change.

Change-Id: I401bfb68c082d1bd405a118d5eca6a47a807945f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/199241
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Alexander Thomas <athom@google.com>
2021-05-12 13:35:00 +00:00
Sam Rawlins 5e040a20f8 analyzer: Improve span of use_of_nullable_value errors
This changes the span reported from the _receiver_ to
the _use_ (method name, property name, operator token).

I think this change is overall an improvement.
Specifically, its a great improvement for cmdline
output, where the receiver and the "use" are on
different lines.

One possibly weird change is that if the operator is `[]`,
then I only highlight the `[` character. I don't know if
there is a better place, and I think this is fine.

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

Change-Id: Ie66ddf04b4904a367575193106385dd63ee39985
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/188680
Commit-Queue: Samuel Rawlins <srawlins@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2021-04-02 02:43:48 +00:00
Sam Rawlins ff6ddd2972 Analyzer: deduplicate errors when operator defined with bad parameters
If an operator declaration has both too many parameters, and one or more
optional parameters, just report the former error.

This is better UX, and is closer aligned to what the CFE reports.

Change-Id: I1f30ab9564f4bcdc49c1f3317add6c55cca29597
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/185201
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Samuel Rawlins <srawlins@google.com>
2021-02-16 22:39:04 +00:00
Lasse R.H. Nielsen 60e001acf8 Add tests for the user-definable >>> operator.
Change-Id: I485d8cae7499fd31a69f279c64c3f465241a474d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/180843
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Erik Ernst <eernst@google.com>
2021-01-29 12:49:46 +00:00
Brian Wilkerson 11e7cdcfd1 Unify two error codes for documentation purposes
Change-Id: I730a0ee287e7d54bace9fdf84a02be5c3f4da017
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178520
Reviewed-by: Samuel Rawlins <srawlins@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2021-01-11 23:12:20 +00:00
Johnni Winther 8103c90dbf [cfe] Use combined member signature in override inference in legacy code
+ emit only one message per method given that it now always has the
same root cause, namely that the combined member signature does not
exist.

Closes #31797

Change-Id: Id89a5557c5fdda1db087c20cbe92847dd08216a3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/175305
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-12-09 17:33:20 +00:00
Johnni Winther 5efe55abf7 [cfe] Fix missing case of using receiver type instead of bound
+ fix test to expect erasure of `S & int` to `S` also when bound is `dynamic`.

Closes #43591

Change-Id: I44cb4c726648d4065bdf89bb2dbf71b2753c6c84
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/169340
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Erik Ernst <eernst@google.com>
2020-10-30 16:33:51 +00:00
Jens Johansen 5a6129406f [parser] Consistently disallow 'late' without 'var', 'final' or type
Fixes https://github.com/dart-lang/sdk/issues/43811
Fixes https://github.com/dart-lang/sdk/issues/43812
Fixes https://github.com/dart-lang/sdk/issues/43813

Change-Id: I39de527883d33459694ec0f91b769676eb52d54b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/168641
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2020-10-23 06:28:51 +00:00
Johnni Winther 4d1e0378c9 [cfe] Update test expectation for number_operator_error_test
Change-Id: I43cda6ca3f57818f9afb0dd33ae9b040f08f384a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/166630
Auto-Submit: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2020-10-09 06:27:16 +00:00
Johnni Winther 5a2a435b6e [cfe] Use combined member signature for override inference.
Closes #43381

Change-Id: Id3ba97d717556f807eac1115e1c3570662cab87c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/166240
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-10-08 15:29:05 +00:00
Leaf Petersen 041261f92f Add tests for promotion behavior related to variable initialization.
Change-Id: I31d9f245f6dc1f34e13d026c95189f10f4dae75f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/163663
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2020-09-23 00:15:25 +00:00
Konstantin Shcheglov 8de8a1c226 Move codes from StaticTypeWarningCode into CompileTimeErrorCode.
They are all errors now.

Change-Id: If48d38e38e845fd5b5a950dd5514bf1cbbce03d8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/155880
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-07-27 16:44:15 +00:00
Konstantin Shcheglov ba92b78acd Move errors from StaticWarningCode to CompileTimeErrorCode.
Bug: https://github.com/dart-lang/sdk/issues/42821
Change-Id: I153c48d7a2e4a02026928e6203aacf8f2dc029ba
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/155849
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2020-07-26 04:19:25 +00:00
Johnni Winther 1dab58697c Fix number operator tests
Change-Id: I082a33b023e574e96e57a0ea28bb8eab98a802b5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/155127
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-07-21 15:27:08 +00:00
Lasse Reichstein Holst Nielsen c894edca89 Update number operator tests to simpler rules.
Change-Id: Iec4eeda564923c542e9881774f988d5a0b5f46c5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/154880
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Erik Ernst <eernst@google.com>
2020-07-20 16:01:17 +00:00
Erik Ernst dc7c947a9c Add/change tests to cover new compile-time errors
Cf. spec update in https://github.com/dart-lang/language/pull/1083.

Change-Id: I99675cf761bfeacf4fd5a971380c548cc4997852
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/153963
Commit-Queue: Erik Ernst <eernst@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2020-07-16 11:17:33 +00:00
Lasse Reichstein Holst Nielsen 5580f89d2c Add test for new numeric operator typing rules.
Change-Id: I8e3c478c129e633421625967ff4ac41c9b565fb2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/153200
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Erik Ernst <eernst@google.com>
2020-07-09 17:41:52 +00:00
Johnni Winther 45af99177b [cfe] Check overrides on operators
Change-Id: Ib250117553b2e22c6c71b78bf354be1162bc9981
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/151235
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-07-08 08:45:34 +00:00
Robert Nystrom 24b33dae89 Migrate language_2/operator to NNBD.
Change-Id: I90bc5ff6aae8998deb3cc28b1134c60058706f01
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/150185
Auto-Submit: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Srujan Gaddam <srujzs@google.com>
Commit-Queue: Bob Nystrom <rnystrom@google.com>
2020-06-11 01:44:45 +00:00
Erik Ernst 4fc60b20df New test, based on language PR #940 about ==.
Change-Id: Iddb347f05eac14048969eb4e6b05e9eab31532e6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/145582
Commit-Queue: Erik Ernst <eernst@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2020-05-12 16:31:59 +00:00
Konstantin Shcheglov 7ed155ff49 Update analyzer expected error range for language/operator/invalid_operators_test.
Change-Id: I1acbbfd8dd173f90a49231577c67678d94040c8a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/143247
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-04-13 18:00:37 +00:00
Johnni Winther 8991dc33d2 Fix language/operator/invalid_operators_test
Closes #40415

Change-Id: If179bc6802e6193aea4c011d889f9ecbfa3020b0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/133993
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2020-02-03 13:35:15 +00:00
Johnni Winther 42246f7f96 [cfe,analyzer] Disallow type parameters on operator methods
This was never supported by the grammar but unfortunately allowed by
both the analyzer and the CFE.

Change-Id: Id669c934fe08eda41973d6d2cef8340da2e7d72c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/133591
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2020-01-31 14:05:02 +00:00