Commit Graph

54 Commits

Author SHA1 Message Date
Paul Berry c739b324a6 Make language tests for issue #45551
Previously, the "why not promoted" test cases sort of exercised this
bug, but in an unclear way that wasn't really related to the "why not
promoted" functionality.  Better to have a separate test for it.

Bug: https://github.com/dart-lang/sdk/issues/45551
Change-Id: Idd44596f021eb91679a019f9f56da1661363d0d8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/193829
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-04-06 13:01:47 +00:00
Johnni Winther 4f65d69e5e [cfe] Handle duplicate getables and conflicting setables
Change-Id: Iea3cb2d74799f891367c27e1d5a460aa6e7ef803
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183661
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2021-02-17 07:38:01 +00:00
Johnni Winther 504d63288e [cfe] Handle setter conflicts
Handle setter conflicts with non-setters and implicit setters.

Closes #44003
Closes #44844

Change-Id: I32c5e4022c187578e2cd37d13151c27451666dbc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/183660
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2021-02-09 15:56:35 +00:00
Paul Berry d4fb6b320c Set BinaryExpression.staticInvokeType properly for extension overrides.
Fixes #43114.

Bug: https://github.com/dart-lang/sdk/issues/43114
Change-Id: Ib0adf67c5ac5189732960a5925d7cdbcff0c4102
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/180441
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2021-01-22 20:53:24 +00:00
Paul Berry c053638eb5 Don't promote this inside extension methods.
This fix addresses legacy code.  The corresponding null safety fix has
already landed--see
https://dart-review.googlesource.com/c/sdk/+/178920.

Bug: https://github.com/dart-lang/sdk/issues/44652
Change-Id: I1d546f59e2ce91256e8da419670cb151a8b6efd6
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/178922
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2021-01-15 20:22:52 +00:00
Konstantin Shcheglov 01024dfa5a Issue 43200. Report ASSIGNMENT_TO_FINAL when 'final late' has an initializer.
Bug: https://github.com/dart-lang/sdk/issues/43200
Change-Id: Ib79b4e8246f8f67661212c3d107de961d72132b4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/161471
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-09-02 15:38:22 +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
Kevin Moore 407428311f Remove extension method opt-in in many language tests
Change-Id: I277a4f29d39c2c4d2669931b5f4837db65589167
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/149522
Auto-Submit: Kevin Moore <kevmoo@google.com>
Commit-Queue: Leaf Petersen <leafp@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
2020-05-31 18:46:23 +00:00
Erik Ernst 2e0bec389b Add tests static_extension_constant_...
Testing that it is a compile-time error to invoke an extension method
during constant expression evaluation.

Change-Id: I52404d87c7da977451411f6cfc10c7059864fba4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/123580
Commit-Queue: Erik Ernst <eernst@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
2020-04-04 10:20:48 +00:00
Johnni Winther b8544e8220 [cfe] Don't report nnbd errors/warnings in top level inference
Closes #41102

Change-Id: Ieede171d92aa28b0ad9478a1b4293ddf35418d7e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140040
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Dmitry Stefantsov <dmitryas@google.com>
2020-03-23 16:39:03 +00:00
Johnni Winther 2049335af3 [cfe] Improve message on ambiguous extension member access
Closes #40862

Change-Id: I7cc2c0cfbbc878709dc3ad645d8a4b37094056c9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/140520
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2020-03-23 09:33:20 +00:00
Leaf Petersen 5e9be81d5e Make all CastErrors be TypeErrors.
This makes CastError implement TypeError, and changes all test
expectations to look for TypeError.  A followup CL will deprecate
CastError.

Bug: https://github.com/dart-lang/language/issues/787
Bug: https://github.com/dart-lang/sdk/issues/34097
Change-Id: I7102c6260901317572d2df08c4be9c4c48197688
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/138670
Reviewed-by: Bob Nystrom <rnystrom@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
2020-03-11 23:31:06 +00:00
Konstantin Shcheglov b3a1f053a3 Issue 40333. Extract GetterSetterTypesVerifier, report GETTER_NOT_SUBTYPE_SETTER_TYPES for NNBD.
Bug: https://github.com/dart-lang/sdk/issues/40333
Change-Id: I265d535956204644859b05d02dd39a0bfdc8c19a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/133640
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-29 02:37:14 +00:00
Konstantin Shcheglov a62aaddcf2 Use ElementTypeProvider in MethodInvocationResolver.
Change-Id: I1a1ad92e01ae52523d39ad861e7f1a41ca3c2a91
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/131202
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2020-01-11 17:38:17 +00:00
Johnni Winther acff31ed26 [cfe] Support null-aware index access
Change-Id: I54b58624722845e4b008b90e675516ec274bc2da
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/125960
Reviewed-by: Jens Johansen <jensj@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2019-11-21 14:36:30 +00:00
Leaf Petersen 8ca18f1a14 Extension method prefixed import tests.
Adds tests for the change to make extension members accessible even
for prefixed imports.  Also tests that it is an error to import a
library with extensions as deferred without hiding the extensions.

Change-Id: I3a81c560694d34c8adbb4cc86ca9e6b8a129ae56
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/124589
Commit-Queue: Leaf Petersen <leafp@google.com>
Reviewed-by: Bob Nystrom <rnystrom@google.com>
2019-11-08 23:17:08 +00:00
Aske Simon Christensen 6812504f08 [CFE] Error when an extension operation is used in a constant expression
Fixes https://github.com/dart-lang/sdk/issues/39146

Change-Id: Iba733d8887b2422d692ff18e03e126baec2f3d90
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/123247
Commit-Queue: Aske Simon Christensen <askesc@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-10-30 12:23:34 +00:00
Johnni Winther 72bae7be70 [cfe] Handle all bounds checks on extension methods.
Closes #38755

Change-Id: I3d5449950ecb3268436a3033ae16bac590a1e4b5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/120790
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Jens Johansen <jensj@google.com>
2019-10-09 19:50:02 +00:00
Leaf Petersen bb04f145b2 Update CFE expectations for extension method tests.
Change-Id: I04662433cb031043714d5ad0a1050a5398b1cf95
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/120740
Reviewed-by: Bob Nystrom <rnystrom@google.com>
2019-10-08 20:16:39 +00:00
Leaf Petersen 7486512634 Update CFE expectations for extension method tests.
Change-Id: I673f5187d74cddfe2f2e54774a713713a137b081
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/120025
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-10-04 17:55:26 +00:00
Johnni Winther 05fb7d80dc [cfe] Update test expectations in static_extension_internal_name_conflict_error_test
Change-Id: Iab47b7aa3a493f5aeeed9c58c6b7067ebcdcf068
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/119141
Reviewed-by: Aske Simon Christensen <askesc@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2019-09-27 18:30:24 +00:00
Johnni Winther ee7aae43c0 [cfe] Handle explicit extension index access
+ avoid implicit extension for [] or []= when the other is defined on
the receiver.

Change-Id: I99c76a66bfb4f72c396097b2f347aad9f0a42f33
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118940
Reviewed-by: Jens Johansen <jensj@google.com>
2019-09-26 10:36:51 +00:00
Johnni Winther f2743fceee Fix language_2/extension_methods/basic_static_extension_test
Change-Id: Idd586013ac8bf0a09209bce738f290c03df806b5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118560
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
2019-09-25 07:30:17 +00:00
Leaf Petersen c2e0f7ee06 Update analyzer expectations from undefined in two tests.
Change-Id: I097c8ab98986d518e97169a159ceccd0fb7826a2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118367
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-09-24 17:16:29 +00:00
Leaf Petersen d53d355c6c Add subscript operator to extension method setter/getter tests.
Change-Id: I09d97d291231eaf81b76c8156e1b3f25b7ab222e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118366
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2019-09-24 00:04:08 +00:00
Lasse R.H. Nielsen 469863ded7 Fix bug in static extension member test.
Change-Id: I525b1ce349b04ddc1aac83c57c2a58a976ae512a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118282
Auto-Submit: Lasse R.H. Nielsen <lrn@google.com>
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
2019-09-20 12:01:45 +00:00
Johnni Winther 0c948521ca Update expectations in static_extesion_operators_test
Change-Id: I9f4ebdc9488adb86106df4fe72234ece634924cc
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117722
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2019-09-18 13:34:46 +00:00
Kallen Tu 83930fdc75 Reformatted extension method tests.
Removed unnecessary semicolon.

Change-Id: Ic5b2ff93b2a8904f377e14b19439a046d8fc2a1d

Reformat tests using dart_style.

Change-Id: I4d50f441fb7fa9d5d934ba6c9f3691ddd87a5cc0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/116551
Reviewed-by: Leaf Petersen <leafp@google.com>
Commit-Queue: Kallen Tu <kallentu@google.com>
2019-09-12 17:39:46 +00:00
Konstantin Shcheglov 3d1712c822 Remove tests for unqualified identifiers from static_extension_getter_setter_conflicts_test
R=brianwilkerson@google.com

Change-Id: I98f11b85ca480b6012e1286a707010ced4305571
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/116744
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2019-09-11 19:37:36 +00:00
Lasse R.H. Nielsen 4d5e15abde Fix broken static_extension_getter_setter_test.
Change-Id: Ie8cfc07df8507862c1d534421a1bd9a60fac580c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/116500
Reviewed-by: Erik Ernst <eernst@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
2019-09-11 07:44:56 +00:00
Konstantin Shcheglov fa099eb717 Look for both getter and setter in the hierarchy before looking for extension.
Change-Id: I7080f5ffb307b9deb9bba453e1d1c1aa253b7cc1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/116489
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-09-10 16:39:09 +00:00
Paul Berry bc24702149 Add missing parens to static_extension_getter_setter_conflicts_test.dart
Change-Id: I12642c789c082c1e083d821b9d01473ca70c1bcf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/116300
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
2019-09-09 15:44:37 +00:00
Leaf Petersen 90aca0b8d5 Add test for incomparable on type resolution and fix expectations.
Change-Id: I8c1ead430a866461d802e86a36c892899645faf4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/115620
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2019-09-05 22:39:21 +00:00
Lasse R.H. Nielsen dfcc31baf3 Add test for getter/setter conflicts with extension members.
Change-Id: I9332e29d021d126d6678f6866d484185e2f1da73
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/115211
Commit-Queue: Lasse R.H. Nielsen <lrn@google.com>
Reviewed-by: Leaf Petersen <leafp@google.com>
Reviewed-by: Erik Ernst <eernst@google.com>
2019-09-05 09:15:43 +00:00
Leaf Petersen d548da74c0 Add tests for extension members shadowed in classes.
Adding tests that unqualified identifiers referenced in classes are
looked up and resolved by basename when the same basename is declared
in the class lexical scope and in the external scope via an extension.

Change-Id: I487c082711350118bf1692771bea33b5621f1eca
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114631
Reviewed-by: Lasse R.H. Nielsen <lrn@google.com>
2019-08-29 21:52:29 +00:00
Leaf Petersen 9a817c722b Add tests for extension method setter/getter basename shadowing.
Test that setters and getters shadow names external to the extension
based on their basename (so that a setter shadows an external getter
and vice versa).

Change-Id: Id5bfceb552ab3d84ef90fc85f8eb80f0eab08451
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112925
Reviewed-by: Erik Ernst <eernst@google.com>
2019-08-26 17:59:13 +00:00
Brian Wilkerson 5935b916e3 Rename several error codes and improve some messages
Change-Id: I6e629719dee14c2af7c1358145fb25b21f5d5157
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/114160
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-08-22 20:08:53 +00:00
Brian Wilkerson 100d500b45 Update test expectations to match analyzer behavior
Change-Id: Ifd0528af3099086aee517813e64656dc1eaa2bdd
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113205
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
2019-08-15 18:20:21 +00:00
Leaf Petersen 617dd903e2 Update static error expectations for
static_extension_bounds_error_test.dart .

Change-Id: Id674261e7619c3ed6fd088158209b7aa34d36aa5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113001
Reviewed-by: Paul Berry <paulberry@google.com>
Commit-Queue: Leaf Petersen <leafp@google.com>
2019-08-14 23:42:03 +00:00
Leaf Petersen 81e98dd47b Update comment on assignability
Change-Id: I2ff2cf3a34e2eb545ed90dd725ecd13b7f1a55b2
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113160
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-08-14 21:21:47 +00:00
Leaf Petersen 76c99bcd01 Add tests for internal name conflicts in extension methods
Change-Id: I7c2bed173f4d945ab83ab9157fcf650ddd4990ce
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112645
Reviewed-by: Bob Nystrom <rnystrom@google.com>
2019-08-14 02:24:44 +00:00
Leaf Petersen b21a5f1adf Fix bugs in static_extension_syntax_test.dart
Fix #37765

Change-Id: I4af67aae1b6e5fbb28371762261d20fccc90d8b7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112751
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-08-12 19:38:39 +00:00
Brian Wilkerson 9eb2e8d111 Stop reporting duplicate diagnostics for other ambiguous extensions
Change-Id: Ia81c43f0ccd41aa09697b6f629fd1d5a3acd3923
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112643
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
2019-08-12 18:04:11 +00:00
Konstantin Shcheglov 9713ce16b9 Report EXTENSION_CONFLICTING_STATIC_AND_INSTANCE and DUPLICATE_DEFINITION for extensions.
R=brianwilkerson@google.com

Change-Id: I237ee3edc6a2196693638c12c59d1530a1f15152
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112605
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
2019-08-09 23:09:25 +00:00
Leaf Petersen 6d9c651fdd Fix typos in static_extension_internal_resolution tests.
Fix #37791
Fix #37792

Change-Id: Id00f7e3eacb6c44ed1914ad0a5748bc800a80af4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112404
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-08-08 22:11:00 +00:00
Leaf Petersen d2048763d4 Add tests of internal extension method resolution.
This adds tests verifying expected error and non-error cases for
resolution of symbols referenced from inside of the definition of an
extension method or a class, which have overlapping definitions in
various different scoping levels.

Change-Id: I753cc80c0dfdefb3e44429e8bb085c8af3ceb685
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/111882
Reviewed-by: Erik Ernst <eernst@google.com>
2019-08-07 23:20:56 +00:00
Leaf Petersen 7b46191f45 Remove incorrect super bounded test, and add tests for bounds
violations in extension method applications.

Fix #37765

Change-Id: I26d286251b0e832577dc170b9a41594c52e25377
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112149
Commit-Queue: Leaf Petersen <leafp@google.com>
Reviewed-by: Erik Ernst <eernst@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
2019-08-07 19:36:24 +00:00
Leaf Petersen 1aa98e5dc6 Fix incorrect getter names in basic_static_extension_test and
static_extension_inference_test .

Fix #37763
Fix #37764

Change-Id: Ibf25b55ba9357c6b0de33e8c20af3f9e1f2e45d3
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112143
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Leaf Petersen <leafp@google.com>
2019-08-06 21:46:17 +00:00
Leaf Petersen 6f551f040b Fix a few extension method test bugs.
Fixes https://github.com/dart-lang/sdk/issues/37749 .
Fixes https://github.com/dart-lang/sdk/issues/37748 .

Change-Id: I31f32964b33679e09d5a71ac39cc51343c0384d9
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112030
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Leaf Petersen <leafp@google.com>
2019-08-05 23:14:07 +00:00