Roll dart_style into the SDK

Includes just one more commit - "Enable support for inline class syntax"

Change-Id: Ie230fc72b7170d3610bdd7ed7ab8c193338f8a93
Bug: b/271244238
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/287020
Commit-Queue: Oleh Prypin <oprypin@google.com>
Reviewed-by: Slava Egorov <vegorov@google.com>
Auto-Submit: Oleh Prypin <oprypin@google.com>
Reviewed-by: Bob Nystrom <rnystrom@google.com>
This commit is contained in:
Oleh Prypin 2023-03-07 16:29:09 +00:00 committed by Commit Queue
parent 7e57f7cc60
commit 47cfe5f97f
31 changed files with 366 additions and 17 deletions

2
DEPS
View file

@ -134,7 +134,7 @@ vars = {
# and land the review.
#
# For more details, see https://github.com/dart-lang/sdk/issues/30164.
"dart_style_rev": "a740aabf43a8b668a8abf8de0530a9f25bb1f5e6", # manually rev'd
"dart_style_rev": "a3f1b041f3c5045d1fee7f1129075d0ad6a4a96e", # manually rev'd
"dartdoc_rev": "77d59945d3af50328aa28b87002437e8f2e6333b", # 6.2.0
"ffi_rev": "32f5eefea59d4461e8ab40e83f157e49d5abe0da",
"file_rev": "72a67c33f90bfb7e10057e286e06d2fe3baa4d98",

View file

@ -1,7 +1,10 @@
@JS()
library static_interop;
import 'package:js/js.dart';
abstract class A {}
@JS()
inline class B {
final A a;
@ -18,4 +21,5 @@ inline class B {
external static B get staticGetter;
external static void set staticSetter(B b);
}
void method(A a) {}

View file

@ -0,0 +1,25 @@
@JS()
library static_interop;
import 'package:js/js.dart';
abstract class A {}
@JS()
inline class B {
external A field;
external A method();
external B(A a);
external B.named(int i);
external B get getter;
external T genericMethod<T>(T t);
external static A staticField;
external static A staticMethod();
external static B get staticGetter;
external static T staticGenericMethod<T>(T t);
external static void set staticSetter(B b);
external void set setter(B b);
final A a;
}
void method(A a) {}

View file

@ -1,7 +1,10 @@
@JS()
library static_interop;
import 'package:js/js.dart';
abstract class A {}
@JS()
inline class B {
final A a;
@ -18,4 +21,5 @@ inline class B {
external static B get staticGetter;
external static void set staticSetter(B b);
}
void method(A a) {}

View file

@ -0,0 +1,25 @@
@JS()
library static_interop;
import 'package:js/js.dart';
abstract class A {}
@JS()
inline class B {
external A field;
external A method();
external B(A a);
external B.named(int i);
external B get getter;
external T genericMethod<T>(T t);
external static A staticField;
external static A staticMethod();
external static B get staticGetter;
external static T staticGenericMethod<T>(T t);
external static void set staticSetter(B b);
external void set setter(B b);
final A a;
}
void method(A a) {}

View file

@ -0,0 +1,9 @@
@Deprecated('')
inline class A {
@Deprecated('')
A(this.i);
@Deprecated('')
final int i;
@Deprecated('')
void m() {}
}

View file

@ -3,9 +3,11 @@ inline class Class {
Class(this.it);
Class.named(int it) : this.it = it + 1;
}
inline class GenericClass<T> {
final T it;
GenericClass(this.it);
}
main() {}
expect(expected, actual) {}

View file

@ -0,0 +1,14 @@
expect(expected, actual) {}
inline class Class {
Class(this.it);
Class.named(int it) : this.it = it + 1;
final int it;
}
inline class GenericClass<T> {
GenericClass(this.it);
final T it;
}
main() {}

View file

@ -8,6 +8,7 @@ inline class Class1 {
Class1.named5(int additional, int it) : this.it = it {}
Class1.named6(String text) : it = text.length;
}
inline class Class2<T> {
final T it;
Class2(this.it);

View file

@ -0,0 +1,21 @@
inline class Class1 {
Class1(this.it);
Class1.named1(this.it, int additional);
Class1.named2(int this.it, int additional) {}
Class1.named3(int it) : this.it = it;
Class1.named4(int additional, int it) : this.it = it;
Class1.named5(int additional, int it) : this.it = it {}
Class1.named6(String text) : it = text.length;
final int it;
}
inline class Class2<T> {
Class2(this.it);
Class2.named1(this.it, int additional);
Class2.named2(T this.it, int additional) {}
Class2.named3(T it) : this.it = it;
Class2.named4(int additional, T it) : this.it = it;
Class2.named5(int additional, T it) : this.it = it {}
Class2.named6(List<T> list) : it = list.first;
final T it;
}

View file

@ -3,10 +3,12 @@ inline class I {
I(int x, [int? y]) : it = x + (y ?? 42);
void m(String s, [int i = 1]) {}
}
inline class I2 {
final int it;
I2(int x, {int? y}) : it = x + (y ?? 87);
void m(String s, {int i = 1}) {}
}
main() {}
expect(expected, actual) {}

View file

@ -0,0 +1,15 @@
expect(expected, actual) {}
inline class I {
I(int x, [int? y]) : it = x + (y ?? 42);
final int it;
void m(String s, [int i = 1]) {}
}
inline class I2 {
I2(int x, {int? y}) : it = x + (y ?? 87);
final int it;
void m(String s, {int i = 1}) {}
}
main() {}

View file

@ -2,6 +2,7 @@ inline class Class1 {
final int field;
Class1(this.field);
}
inline class Class2 {
final int field;
Class2(this.field);

View file

@ -0,0 +1,9 @@
inline class Class1 {
Class1(this.field);
final int field;
}
inline class Class2 {
Class2(this.field);
final int field;
}

View file

@ -1,4 +1,5 @@
abstract class A {}
inline class B {
final A a;
external B(A a);
@ -14,4 +15,5 @@ inline class B {
external static B get staticGetter;
external static void set staticSetter(B b);
}
void method(A a) {}

View file

@ -0,0 +1,19 @@
abstract class A {}
inline class B {
external A field;
external A method();
external B(A a);
external B.named(int i);
external B get getter;
external T genericMethod<T>(T t);
external static A staticField;
external static A staticMethod();
external static B get staticGetter;
external static T staticGenericMethod<T>(T t);
external static void set staticSetter(B b);
external void set setter(B b);
final A a;
}
void method(A a) {}

View file

@ -1,36 +1,51 @@
import 'field_access_lib.dart';
extension on dynamic {
void set it(value) {}
}
inline class InlineClass {
final int it;
InlineClass(this.it);
void test() {}
}
inline class GenericInlineClass<T> {
final T it;
GenericInlineClass(this.it);
void test(T t) {}
}
inline class FunctionInlineClass<T> {
final T Function() it;
FunctionInlineClass(this.it);
void test(T Function() t) {}
}
inline class GenericFunctionInlineClass {
final T Function<T>() it;
GenericFunctionInlineClass(this.it);
void test() {}
}
inline class DynamicInlineClass {
final dynamic it;
DynamicInlineClass(this.it);
void test() {}
}
inline class ErroneousInlineClass {
final int a;
final String b;
ErroneousInlineClass(this.a, this.b);
void test() {}
}
void test( InlineClass inlineClass, GenericInlineClass<String> genericInlineClass, FunctionInlineClass<String> functionInlineClass, GenericFunctionInlineClass genericFunctionInlineClass, DynamicInlineClass dynamicInlineClass, ErroneousInlineClass erroneousInlineClass, PrivateInlineClass privateInlineClass) {}
void test(
InlineClass inlineClass,
GenericInlineClass<String> genericInlineClass,
FunctionInlineClass<String> functionInlineClass,
GenericFunctionInlineClass genericFunctionInlineClass,
DynamicInlineClass dynamicInlineClass,
ErroneousInlineClass erroneousInlineClass,
PrivateInlineClass privateInlineClass) {}

View file

@ -0,0 +1,51 @@
import 'field_access_lib.dart';
extension on dynamic {
void set it(value) {}
}
inline class DynamicInlineClass {
DynamicInlineClass(this.it);
final dynamic it;
void test() {}
}
inline class ErroneousInlineClass {
ErroneousInlineClass(this.a, this.b);
final String b;
final int a;
void test() {}
}
inline class FunctionInlineClass<T> {
FunctionInlineClass(this.it);
final T Function() it;
void test(T Function() t) {}
}
inline class GenericFunctionInlineClass {
GenericFunctionInlineClass(this.it);
final T Function<T>() it;
void test() {}
}
inline class GenericInlineClass<T> {
GenericInlineClass(this.it);
final T it;
void test(T t) {}
}
inline class InlineClass {
InlineClass(this.it);
final int it;
void test() {}
}
void test(
InlineClass inlineClass,
GenericInlineClass<String> genericInlineClass,
FunctionInlineClass<String> functionInlineClass,
GenericFunctionInlineClass genericFunctionInlineClass,
DynamicInlineClass dynamicInlineClass,
ErroneousInlineClass erroneousInlineClass,
PrivateInlineClass privateInlineClass) {}

View file

@ -3,26 +3,31 @@ inline class A {
A(this.it);
int methodA() => it + 5;
}
inline class B<T> {
final T it;
B(this.it);
T methodB() => it;
}
inline class C1 implements A {
final int it;
C1(this.it);
int methodC1() => it + 42;
}
inline class C2 implements A, B<int> {
final int it;
C2(this.it);
int methodC2() => it + 87;
}
inline class D1 implements C1 {
final int it;
D1(this.it);
int methodD1() => it + 123;
}
errors(A a, B<String> b1, B<num> b2, C1 c1, C2 c2, D1 d1) {}
method(A a, B<String> b1, B<num> b2, C1 c1, C2 c2, D1 d1) {}
main() {}

View file

@ -0,0 +1,35 @@
errors(A a, B<String> b1, B<num> b2, C1 c1, C2 c2, D1 d1) {}
expect(expected, actual) {}
inline class A {
A(this.it);
final int it;
int methodA() => it + 5;
}
inline class B<T> {
B(this.it);
T methodB() => it;
final T it;
}
inline class C1 implements A {
C1(this.it);
final int it;
int methodC1() => it + 42;
}
inline class C2 implements A, B<int> {
C2(this.it);
final int it;
int methodC2() => it + 87;
}
inline class D1 implements C1 {
D1(this.it);
final int it;
int methodD1() => it + 123;
}
main() {}
method(A a, B<String> b1, B<num> b2, C1 c1, C2 c2, D1 d1) {}

View file

@ -2,21 +2,26 @@ inline class Class1 {
final int field;
Class1(this.field);
}
inline class Class2 {
final int field;
Class2(int field) : this.field = field;
}
inline class Class3 {
final int field;
}
inline class Class4 {
final int field;
Class4(this.field, this.nonexisting);
}
inline class Class5 {
final int field;
Class5(this.field) : this.field = 42;
}
inline class Class6 {
final int field;
Class6(this.field) : this.nonexisting = 42;

View file

@ -0,0 +1,28 @@
inline class Class1 {
Class1(this.field);
final int field;
}
inline class Class2 {
Class2(int field) : this.field = field;
final int field;
}
inline class Class3 {
final int field;
}
inline class Class4 {
Class4(this.field, this.nonexisting);
final int field;
}
inline class Class5 {
Class5(this.field) : this.field = 42;
final int field;
}
inline class Class6 {
Class6(this.field) : this.nonexisting = 42;
final int field;
}

View file

@ -2,4 +2,5 @@ inline class A {
int value;
A.name1(this.value);
}
void method() => A.name2(1);

View file

@ -0,0 +1,6 @@
inline class A {
A.name1(this.value);
int value;
}
void method() => A.name2(1);

View file

@ -2,6 +2,7 @@ extension on Object {
int get setter => 42;
void set getter(int value) {}
}
inline class InlineClass {
final int it;
InlineClass(this.it);
@ -16,4 +17,5 @@ inline class InlineClass {
T genericMethod<T>(T t) => t;
int call() => 321;
}
test(InlineClass ic) {}

View file

@ -0,0 +1,21 @@
extension on Object {
int get setter => 42;
void set getter(int value) {}
}
inline class InlineClass {
InlineClass(this.it);
T genericMethod<T>(T t) => t;
final int it;
int call() => 321;
int get getter => 42;
int method() => 42;
int operator +(int other) => 42;
int operator -() => 87;
int operator [](int index) => 123;
test() {}
void operator []=(int index, int value) {}
void set setter(int value) {}
}
test(InlineClass ic) {}

View file

@ -7,6 +7,7 @@ inline class Class {
static void staticMethod() {}
static S genericStaticMethod<S>(S s) => s;
}
inline class GenericClass<T> {
final T it;
void instanceMethod() {}

View file

@ -0,0 +1,19 @@
inline class Class {
S genericInstanceMethod<S>(S s) => s;
final int it;
int get instanceGetter => 42;
static S genericStaticMethod<S>(S s) => s;
static void staticMethod() {}
void instanceMethod() {}
void instanceMethod2(String s, [int i = 42]) {}
}
inline class GenericClass<T> {
S genericInstanceMethod<S>(S s) => s;
T get instanceGetter => throw '';
final T it;
static S genericStaticMethod<S>(S s) => s;
static void staticMethod() {}
void instanceMethod() {}
void instanceMethod2(String s, {int i = 42}) {}
}

View file

@ -1,14 +1,17 @@
inline class Missing {}
inline class Static {
static int staticField = 42;
final bool instanceField;
Static(this.instanceField);
}
inline class Multiple {
final bool instanceField1;
final int instanceField2;
Multiple(this.instanceField1);
}
inline class Duplicate {
final bool instanceField;
final int instanceField;

View file

@ -0,0 +1,19 @@
inline class Duplicate {
Duplicate(this.instanceField);
final bool instanceField;
final int instanceField;
}
inline class Missing {}
inline class Multiple {
Multiple(this.instanceField1);
final bool instanceField1;
final int instanceField2;
}
inline class Static {
Static(this.instanceField);
final bool instanceField;
static int staticField = 42;
}

View file

@ -28,8 +28,6 @@ const_functions/const_functions_const_factory: FormatterCrash
constructor_tearoffs/issue46133: FormatterCrash
constructor_tearoffs/issue47075: FormatterCrash
constructor_tearoffs/new_as_selector: FormatterCrash
dart2js/inline_class/external: FormatterCrash
dartdevc/inline_class/external: FormatterCrash
enhanced_enums/recovery_in_elements: FormatterCrash
extension_types/basic_show: FormatterCrash
extension_types/call_not_get: FormatterCrash
@ -119,20 +117,7 @@ general/sealed_class_declaration: FormatterCrash
general/type_parameters_on_void: FormatterCrash
general/type_variable_in_static_context: FormatterCrash
general/var_as_type_name: FormatterCrash
inline_class/annotations: FormatterCrash
inline_class/constructor_access: FormatterCrash
inline_class/constructor_bodies: FormatterCrash
inline_class/constructor_formal_parameters: FormatterCrash
inline_class/constructors: FormatterCrash
inline_class/external: FormatterCrash
inline_class/field_access: FormatterCrash
inline_class/implements: FormatterCrash
inline_class/initializers: FormatterCrash
inline_class/inline_class_declaration: FormatterCrash
inline_class/member_not_found: FormatterCrash
inline_class/method_access: FormatterCrash
inline_class/procedures: FormatterCrash
inline_class/representation: FormatterCrash
late_lowering/later: FormatterCrash
macros/augment_class: FormatterCrash
macros/augment_concrete: FormatterCrash