Skip to content

Commit 8f95ae5

Browse files
scheglovCommit Queue
authored andcommitted
Elements. Turn FormalParameterFragmentImpl.defaultValueCode into a getter.
I'd like to reduce the nomenclature of VariableElement(s). Change-Id: I97ce163222c9c968e2c51ff11a77c8bea300a20a Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/437581 Commit-Queue: Konstantin Shcheglov <[email protected]> Reviewed-by: Paul Berry <[email protected]>
1 parent 1400bd0 commit 8f95ae5

File tree

4 files changed

+93
-105
lines changed

4 files changed

+93
-105
lines changed

pkg/analyzer/lib/src/dart/element/element.dart

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3379,9 +3379,6 @@ class FormalParameterFragmentImpl extends VariableFragmentImpl
33793379
@override
33803380
final ParameterKind parameterKind;
33813381

3382-
@override
3383-
String? defaultValueCode;
3384-
33853382
/// True if this parameter inherits from a covariant parameter. This happens
33863383
/// when it overrides a method in a supertype that has a corresponding
33873384
/// covariant parameter.
@@ -3426,6 +3423,9 @@ class FormalParameterFragmentImpl extends VariableFragmentImpl
34263423
@override
34273424
FormalParameterFragmentImpl get declaration => this;
34283425

3426+
@override
3427+
String? get defaultValueCode => null;
3428+
34293429
@override
34303430
FormalParameterElementImpl get element {
34313431
if (_element != null) {

pkg/analyzer/lib/src/test_utilities/mock_sdk_elements.dart

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1142,19 +1142,14 @@ class _MockSdkElementsBuilder {
11421142
return fragment;
11431143
}
11441144

1145-
FormalParameterElement _namedParameter(
1146-
String name,
1147-
TypeImpl type, {
1148-
String? initializerCode,
1149-
}) {
1145+
FormalParameterElement _namedParameter(String name, TypeImpl type) {
11501146
var fragment = DefaultParameterFragmentImpl(
11511147
nameOffset: 0,
11521148
name2: name,
11531149
nameOffset2: 0,
11541150
parameterKind: ParameterKind.NAMED,
11551151
);
11561152
fragment.type = type;
1157-
fragment.defaultValueCode = initializerCode;
11581153
return FormalParameterElementImpl(fragment);
11591154
}
11601155

pkg/analyzer/test/generated/elements_types_mixin.dart

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -536,7 +536,6 @@ mixin ElementsTypesMixin {
536536
String? name,
537537
required TypeImpl type,
538538
bool isCovariant = false,
539-
String? defaultValueCode,
540539
}) {
541540
var fragment = FormalParameterFragmentImpl(
542541
nameOffset: 0,
@@ -546,7 +545,6 @@ mixin ElementsTypesMixin {
546545
);
547546
fragment.type = type;
548547
fragment.isExplicitlyCovariant = isCovariant;
549-
fragment.defaultValueCode = defaultValueCode;
550548
return fragment.asElement2;
551549
}
552550

pkg/analyzer/test/src/dart/element/display_string_test.dart

Lines changed: 89 additions & 94 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,10 @@
33
// BSD-style license that can be found in the LICENSE file.
44

55
import 'package:analyzer/src/dart/element/element.dart';
6-
import 'package:analyzer/src/utilities/extensions/element.dart';
76
import 'package:test/test.dart';
87
import 'package:test_reflective_loader/test_reflective_loader.dart';
98

10-
import '../../../generated/type_system_base.dart';
9+
import '../resolution/context_collection_resolution.dart';
1110

1211
main() {
1312
defineReflectiveSuite(() {
@@ -16,68 +15,72 @@ main() {
1615
}
1716

1817
@reflectiveTest
19-
class ElementDisplayStringTest extends AbstractTypeSystemTest {
20-
void test_class() {
21-
var classA = class_(
22-
name: 'A',
23-
isAbstract: true,
24-
superType: stringNone,
25-
typeParameters: [typeParameter('T')],
26-
);
27-
28-
var displayString = classA.getDisplayString();
29-
expect(displayString, 'abstract class A<T> extends String');
18+
class ElementDisplayStringTest extends PubPackageResolutionTest {
19+
test_class() async {
20+
await assertNoErrorsInCode(r'''
21+
class A {}
22+
abstract class B<T> extends A {}
23+
''');
24+
25+
var B = findElement2.class_('B').firstFragment as ClassFragmentImpl;
26+
var displayString = B.getDisplayString();
27+
expect(displayString, 'abstract class B<T> extends A');
3028
}
3129

32-
void test_extension_named() {
33-
var element = extension(name: 'StringExtension', extendedType: stringNone);
30+
test_extension_named() async {
31+
await assertNoErrorsInCode(r'''
32+
extension StringExtension on String {}
33+
''');
34+
35+
var element = findElement2.extension_('StringExtension');
36+
var fragment = element.firstFragment as ExtensionFragmentImpl;
3437

35-
var displayString = element.getDisplayString();
38+
var displayString = fragment.getDisplayString();
3639
expect(displayString, 'extension StringExtension on String');
3740
}
3841

39-
void test_extension_unnamed() {
40-
var element = extension(extendedType: stringNone);
42+
test_extension_unnamed() async {
43+
await assertNoErrorsInCode(r'''
44+
extension on String {}
45+
''');
4146

42-
var displayString = element.getDisplayString();
47+
var element = result.libraryElement2.extensions.single;
48+
var fragment = element.firstFragment;
49+
50+
var displayString = fragment.getDisplayString();
4351
expect(displayString, 'extension on String');
4452
}
4553

46-
void test_extensionType() {
47-
var element = extensionType(
48-
'MyString',
49-
representationType: stringNone,
50-
interfaces: [stringNone],
51-
typeParameters: [typeParameter('T')],
52-
);
54+
test_extensionType() async {
55+
await assertNoErrorsInCode(r'''
56+
extension type MyString<T>(String it) implements String {}
57+
''');
5358

54-
var displayString = element.getDisplayString();
59+
var element = findElement2.extensionType('MyString');
60+
var fragment = element.firstFragment as ExtensionTypeFragmentImpl;
61+
62+
var displayString = fragment.getDisplayString();
5563
expect(
5664
displayString,
5765
'extension type MyString<T>(String it) implements String',
5866
);
5967
}
6068

61-
void test_longMethod() {
62-
var methodA = method(
63-
'longMethodName',
64-
stringQuestion,
65-
formalParameters: [
66-
requiredParameter(name: 'aaa', type: stringQuestion),
67-
positionalParameter(
68-
name: 'bbb',
69-
type: stringQuestion,
70-
defaultValueCode: "'a'",
71-
),
72-
positionalParameter(name: 'ccc', type: stringQuestion),
73-
],
74-
);
69+
test_longMethod() async {
70+
await assertNoErrorsInCode(r'''
71+
abstract class A {
72+
String? longMethodName(String? aaa, [String? bbb = 'a', String? ccc]);
73+
}
74+
''');
75+
76+
var methodElement = findElement2.method('longMethodName');
77+
var methodFragment = methodElement.firstFragment as MethodFragmentImpl;
7578

76-
var singleLine = methodA.getDisplayString();
79+
var singleLine = methodFragment.getDisplayString();
7780
expect(singleLine, '''
7881
String? longMethodName(String? aaa, [String? bbb = 'a', String? ccc])''');
7982

80-
var multiLine = methodA.getDisplayString(multiline: true);
83+
var multiLine = methodFragment.getDisplayString(multiline: true);
8184
expect(multiLine, '''
8285
String? longMethodName(
8386
String? aaa, [
@@ -86,37 +89,28 @@ String? longMethodName(
8689
])''');
8790
}
8891

89-
void test_longMethod_functionType() {
90-
// Function types are always kept on one line, even nested within multiline
91-
// signatures.
92-
var methodA = method(
93-
'longMethodName',
94-
stringQuestion,
95-
formalParameters: [
96-
requiredParameter(name: 'aaa', type: stringQuestion),
97-
positionalParameter(
98-
name: 'bbb',
99-
type: functionTypeNone(
100-
formalParameters: [
101-
requiredParameter(name: 'xxx', type: stringQuestion),
102-
requiredParameter(name: 'yyy', type: stringQuestion),
103-
requiredParameter(name: 'zzz', type: stringQuestion),
104-
],
105-
returnType: stringQuestion,
106-
),
107-
),
108-
positionalParameter(name: 'ccc', type: stringQuestion),
109-
],
110-
);
92+
test_longMethod_functionType() async {
93+
await assertNoErrorsInCode(r'''
94+
abstract class A {
95+
String? longMethodName(
96+
String? aaa,
97+
[String? Function(String?, String?, String?) bbb,
98+
String? ccc]
99+
);
100+
}
101+
''');
102+
103+
var methodElement = findElement2.method('longMethodName');
104+
var methodFragment = methodElement.firstFragment as MethodFragmentImpl;
111105

112-
var singleLine = methodA.getDisplayString();
106+
var singleLine = methodFragment.getDisplayString();
113107
expect(
114108
singleLine,
115109
'''
116110
String? longMethodName(String? aaa, [String? Function(String?, String?, String?) bbb, String? ccc])''',
117111
);
118112

119-
var multiLine = methodA.getDisplayString(multiline: true);
113+
var multiLine = methodFragment.getDisplayString(multiline: true);
120114
expect(multiLine, '''
121115
String? longMethodName(
122116
String? aaa, [
@@ -125,41 +119,42 @@ String? longMethodName(
125119
])''');
126120
}
127121

128-
void test_property_getter() {
129-
var getterA = GetterFragmentImpl.forVariable(
130-
TopLevelVariableFragmentImpl(name2: 'a', nameOffset: 0),
131-
)..returnType = stringNone;
122+
test_property_getter() async {
123+
await assertNoErrorsInCode(r'''
124+
String get a => '';
125+
''');
132126

133-
expect(getterA.getDisplayString(), 'String get a');
127+
var element = findElement2.topGet('a');
128+
var fragment = element.firstFragment as GetterFragmentImpl;
129+
130+
expect(fragment.getDisplayString(), 'String get a');
134131
}
135132

136-
void test_property_setter() {
137-
var setterA =
138-
SetterFragmentImpl.forVariable(
139-
TopLevelVariableFragmentImpl(name2: 'a', nameOffset: 0),
140-
)
141-
..returnType = voidNone
142-
..parameters = [
143-
requiredParameter(name: 'value', type: stringNone).asElement,
144-
];
145-
146-
expect(setterA.getDisplayString(), 'set a(String value)');
133+
test_property_setter() async {
134+
await assertNoErrorsInCode(r'''
135+
set a(String value) {}
136+
''');
137+
138+
var element = findElement2.topSet('a');
139+
var fragment = element.firstFragment as SetterFragmentImpl;
140+
141+
expect(fragment.getDisplayString(), 'set a(String value)');
147142
}
148143

149-
void test_shortMethod() {
150-
var methodA = method(
151-
'm',
152-
stringQuestion,
153-
formalParameters: [
154-
requiredParameter(name: 'a', type: stringQuestion),
155-
positionalParameter(name: 'b', type: stringQuestion),
156-
],
157-
);
144+
test_shortMethod() async {
145+
await assertNoErrorsInCode(r'''
146+
abstract class A {
147+
String? m(String? a, [String? b]);
148+
}
149+
''');
150+
151+
var element = findElement2.method('m');
152+
var fragment = element.firstFragment as MethodFragmentImpl;
158153

159-
var singleLine = methodA.getDisplayString();
154+
var singleLine = fragment.getDisplayString();
160155
expect(singleLine, 'String? m(String? a, [String? b])');
161156

162-
var multiLine = methodA.getDisplayString(multiline: true);
157+
var multiLine = fragment.getDisplayString(multiline: true);
163158
// The signature is short enough that it remains on one line even for
164159
// multiline: true.
165160
expect(multiLine, 'String? m(String? a, [String? b])');

0 commit comments

Comments
 (0)