Skip to content

Commit 68ccd13

Browse files
author
Dart CI
committed
Version 2.17.0-14.0.dev
Merge commit 'b5d627cccb3a5d5d9a093803f56b4da32caf861f' into 'dev'
2 parents aa6fbac + b5d627c commit 68ccd13

16 files changed

+715
-306
lines changed

pkg/analyzer/lib/src/dart/analysis/driver.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ import 'package:meta/meta.dart';
8282
/// TODO(scheglov) Clean up the list of implicitly analyzed files.
8383
class AnalysisDriver implements AnalysisDriverGeneric {
8484
/// The version of data format, should be incremented on every format change.
85-
static const int DATA_VERSION = 197;
85+
static const int DATA_VERSION = 199;
8686

8787
/// The number of exception contexts allowed to write. Once this field is
8888
/// zero, we stop writing any new exception contexts in this process.

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

Lines changed: 39 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,20 @@ abstract class AbstractClassElementImpl extends _ExistingElementImpl
166166
return null;
167167
}
168168

169+
@override
170+
ConstructorElement? getNamedConstructor(String name) {
171+
if (name == 'new') {
172+
// A constructor declared as `C.new` is unnamed, and is modeled as such.
173+
name = '';
174+
}
175+
for (ConstructorElement element in constructors) {
176+
if (element.name == name) {
177+
return element;
178+
}
179+
}
180+
return null;
181+
}
182+
169183
@override
170184
PropertyAccessorElement? getSetter(String setterName) {
171185
return getSetterFromAccessors(setterName, accessors);
@@ -447,9 +461,6 @@ class ClassElementImpl extends AbstractClassElementImpl {
447461
/// This callback is set during mixins inference to handle reentrant calls.
448462
List<InterfaceType>? Function(ClassElementImpl)? mixinInferenceCallback;
449463

450-
/// TODO(scheglov) implement as modifier
451-
bool _isSimplyBounded = true;
452-
453464
ElementLinkedData? linkedData;
454465

455466
/// Initialize a newly created class element to have the given [name] at the
@@ -661,15 +672,13 @@ class ClassElementImpl extends AbstractClassElementImpl {
661672
setModifier(Modifier.MIXIN_APPLICATION, isMixinApplication);
662673
}
663674

664-
/// TODO(scheglov) implement as modifier
665675
@override
666676
bool get isSimplyBounded {
667-
return _isSimplyBounded;
677+
return hasModifier(Modifier.SIMPLY_BOUNDED);
668678
}
669679

670-
/// TODO(scheglov) implement as modifier
671680
set isSimplyBounded(bool isSimplyBounded) {
672-
_isSimplyBounded = isSimplyBounded;
681+
setModifier(Modifier.SIMPLY_BOUNDED, isSimplyBounded);
673682
}
674683

675684
@override
@@ -783,10 +792,6 @@ class ClassElementImpl extends AbstractClassElementImpl {
783792
builder.writeClassElement(this);
784793
}
785794

786-
@override
787-
ConstructorElement? getNamedConstructor(String name) =>
788-
getNamedConstructorFromList(name, constructors);
789-
790795
void setLinkedData(Reference reference, ElementLinkedData linkedData) {
791796
this.reference = reference;
792797
reference.element = this;
@@ -948,20 +953,6 @@ class ClassElementImpl extends AbstractClassElementImpl {
948953
return implicitConstructor;
949954
}).toList(growable: false);
950955
}
951-
952-
static ConstructorElement? getNamedConstructorFromList(
953-
String name, List<ConstructorElement> constructors) {
954-
if (name == 'new') {
955-
// A constructor declared as `C.new` is unnamed, and is modeled as such.
956-
name = '';
957-
}
958-
for (ConstructorElement element in constructors) {
959-
if (element.name == name) {
960-
return element;
961-
}
962-
}
963-
return null;
964-
}
965956
}
966957

967958
/// A concrete implementation of a [CompilationUnitElement].
@@ -2749,6 +2740,14 @@ class EnumElementImpl extends AbstractClassElementImpl {
27492740
return _methods;
27502741
}
27512742

2743+
/// Set the methods contained in this class to the given [methods].
2744+
set methods(List<MethodElement> methods) {
2745+
for (MethodElement method in methods) {
2746+
(method as MethodElementImpl).enclosingElement = this;
2747+
}
2748+
_methods = methods;
2749+
}
2750+
27522751
@override
27532752
List<InterfaceType> get mixins => const <InterfaceType>[];
27542753

@@ -2777,18 +2776,6 @@ class EnumElementImpl extends AbstractClassElementImpl {
27772776
builder.writeEnumElement(this);
27782777
}
27792778

2780-
/// Create the only method enums have - `toString()`.
2781-
void createToStringMethodElement() {
2782-
var method = MethodElementImpl('toString', -1);
2783-
method.isSynthetic = true;
2784-
method.enclosingElement = this;
2785-
method.reference = reference?.getChild('@method').getChild('toString');
2786-
_methods = <MethodElement>[method];
2787-
}
2788-
2789-
@override
2790-
ConstructorElement? getNamedConstructor(String name) => null;
2791-
27922779
void setLinkedData(Reference reference, ElementLinkedData linkedData) {
27932780
this.reference = reference;
27942781
reference.element = this;
@@ -4332,14 +4319,17 @@ class Modifier implements Comparable<Modifier> {
43324319
/// Indicates that the pseudo-modifier 'set' was applied to the element.
43334320
static const Modifier SETTER = Modifier('SETTER', 19);
43344321

4322+
/// See [TypeParameterizedElement.isSimplyBounded].
4323+
static const Modifier SIMPLY_BOUNDED = Modifier('SIMPLY_BOUNDED', 20);
4324+
43354325
/// Indicates that the modifier 'static' was applied to the element.
4336-
static const Modifier STATIC = Modifier('STATIC', 20);
4326+
static const Modifier STATIC = Modifier('STATIC', 21);
43374327

43384328
/// Indicates that the element does not appear in the source code but was
43394329
/// implicitly created. For example, if a class does not define any
43404330
/// constructors, an implicit zero-argument constructor will be created and it
43414331
/// will be marked as being synthetic.
4342-
static const Modifier SYNTHETIC = Modifier('SYNTHETIC', 21);
4332+
static const Modifier SYNTHETIC = Modifier('SYNTHETIC', 22);
43434333

43444334
static const List<Modifier> values = [
43454335
ABSTRACT,
@@ -4362,6 +4352,7 @@ class Modifier implements Comparable<Modifier> {
43624352
MIXIN_APPLICATION,
43634353
SETTER,
43644354
STATIC,
4355+
SIMPLY_BOUNDED,
43654356
SYNTHETIC
43664357
];
43674358

@@ -5445,10 +5436,6 @@ class TopLevelVariableElementImpl extends PropertyInducingElementImpl
54455436
class TypeAliasElementImpl extends _ExistingElementImpl
54465437
with TypeParameterizedElementMixin
54475438
implements TypeAliasElement {
5448-
/// TODO(scheglov) implement as modifier
5449-
@override
5450-
bool isSimplyBounded = true;
5451-
54525439
/// Is `true` if the element has direct or indirect reference to itself
54535440
/// from anywhere except a class element or type parameter bounds.
54545441
bool hasSelfReference = false;
@@ -5518,6 +5505,15 @@ class TypeAliasElementImpl extends _ExistingElementImpl
55185505
return true;
55195506
}
55205507

5508+
@override
5509+
bool get isSimplyBounded {
5510+
return hasModifier(Modifier.SIMPLY_BOUNDED);
5511+
}
5512+
5513+
set isSimplyBounded(bool isSimplyBounded) {
5514+
setModifier(Modifier.SIMPLY_BOUNDED, isSimplyBounded);
5515+
}
5516+
55215517
@override
55225518
ElementKind get kind {
55235519
if (isNonFunctionTypeAliasesEnabled) {

pkg/analyzer/lib/src/summary2/ast_resolver.dart

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,9 +50,13 @@ class AstResolver {
5050
flowAnalysisHelper: _flowAnalysis,
5151
);
5252

53-
AstResolver(this._linker, this._unitElement, this._nameScope, AstNode node,
54-
{this.enclosingClassElement, this.enclosingExecutableElement})
55-
: _featureSet = node.thisOrAncestorOfType<CompilationUnit>()!.featureSet;
53+
AstResolver(
54+
this._linker,
55+
this._unitElement,
56+
this._nameScope, {
57+
this.enclosingClassElement,
58+
this.enclosingExecutableElement,
59+
}) : _featureSet = _unitElement.library.featureSet;
5660

5761
void resolveAnnotation(AnnotationImpl node) {
5862
node.accept(_resolutionVisitor);

pkg/analyzer/lib/src/summary2/bundle_reader.dart

Lines changed: 2 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -272,23 +272,10 @@ class EnumElementLinkedData extends ElementLinkedData<EnumElementImpl> {
272272

273273
@override
274274
void _read(element, reader) {
275-
var typeProvider = element.library.typeProvider;
276-
277275
element.metadata = reader._readAnnotationList(
278276
unitElement: element.enclosingElement,
279277
);
280278
_readTypeParameters(reader, element.typeParameters);
281-
282-
var indexField = element.getField('index') as FieldElementImpl;
283-
indexField.type = typeProvider.intType;
284-
285-
var valuesField = element.getField('values') as ConstFieldElementImpl;
286-
valuesField.constantInitializer = reader._readRequiredNode() as Expression;
287-
valuesField.type = typeProvider.listType(element.thisType);
288-
289-
var toStringMethod = element.getMethod('toString') as MethodElementImpl;
290-
toStringMethod.returnType = typeProvider.stringType;
291-
292279
applyConstantOffsets?.perform();
293280
}
294281
}
@@ -612,44 +599,14 @@ class LibraryReader {
612599
var accessors = <PropertyAccessorElement>[];
613600
var fields = <FieldElement>[];
614601

615-
// Build the 'index' field.
616-
{
617-
var indexField = ConstFieldElementImpl('index', -1)
618-
..isFinal = true
619-
..isSynthetic = true;
620-
indexField.bindReference(
621-
reference.getChild('@field').getChild('index'),
622-
);
623-
indexField.createImplicitAccessors(reference, 'index');
624-
fields.add(indexField);
625-
accessors.add(indexField.getter!);
626-
}
627-
628602
_readFields(unitElement, element, reference, accessors, fields);
629603
_readPropertyAccessors(
630604
unitElement, element, reference, accessors, fields, '@field');
631-
632-
// Build the 'values' field.
633-
{
634-
var field = ConstFieldElementImpl('values', -1)
635-
..isConst = true
636-
..isStatic = true
637-
..isSynthetic = true;
638-
fields.add(field);
639-
accessors.add(
640-
PropertyAccessorElementImpl_ImplicitGetter(field,
641-
reference: reference.getChild('@getter').getChild('values'))
642-
..enclosingElement = element,
643-
);
644-
}
645-
646605
element.fields = fields;
647606
element.accessors = accessors;
648607

649608
element.constructors = _readConstructors(unitElement, element, reference);
650-
// element.methods = _readMethods(unitElement, element, reference);
651-
652-
element.createToStringMethodElement();
609+
element.methods = _readMethods(unitElement, element, reference);
653610

654611
return element;
655612
}
@@ -884,6 +841,7 @@ class LibraryReader {
884841
offset: resolutionOffset,
885842
);
886843
element.setLinkedData(reference, linkedData);
844+
MixinElementFlags.read(_reader, element);
887845

888846
element.typeParameters = _readTypeParameters();
889847

pkg/analyzer/lib/src/summary2/bundle_writer.dart

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -175,19 +175,18 @@ class BundleWriter {
175175
_resolutionSink._writeAnnotationList(element.metadata);
176176

177177
_writeTypeParameters(element.typeParameters, () {
178-
var valuesField = element.getField('values') as ConstFieldElementImpl;
179-
_resolutionSink._writeNode(valuesField.constantInitializer!);
180-
181178
_writeList(
182-
element.fields.where((e) => !e.isSynthetic).toList(),
179+
element.fields.where((e) {
180+
return !e.isSynthetic || const {'index', 'values'}.contains(e.name);
181+
}).toList(),
183182
_writeFieldElement,
184183
);
185184
_writeList(
186185
element.accessors.where((e) => !e.isSynthetic).toList(),
187186
_writePropertyAccessorElement,
188187
);
189188
_writeList(element.constructors, _writeConstructorElement);
190-
// _writeList(element.methods, _writeMethodElement);
189+
_writeList(element.methods, _writeMethodElement);
191190
});
192191
}
193192

@@ -305,6 +304,7 @@ class BundleWriter {
305304
_sink.writeUInt30(_resolutionSink.offset);
306305

307306
_sink._writeStringReference(element.name);
307+
MixinElementFlags.write(_sink, element);
308308
_resolutionSink._writeAnnotationList(element.metadata);
309309

310310
_writeTypeParameters(element.typeParameters, () {

pkg/analyzer/lib/src/summary2/constructor_initializer_resolver.dart

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class ConstructorInitializerResolver {
4646
element,
4747
);
4848

49-
var astResolver = AstResolver(_linker, unitElement, initializerScope, node,
49+
var astResolver = AstResolver(_linker, unitElement, initializerScope,
5050
enclosingClassElement: classElement,
5151
enclosingExecutableElement: element);
5252

pkg/analyzer/lib/src/summary2/default_value_resolver.dart

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,6 @@ class DefaultValueResolver {
7474
_linker,
7575
context.unitElement,
7676
context.scope,
77-
node.defaultValue!,
7877
enclosingClassElement: context.classElement,
7978
enclosingExecutableElement: context.executableElement,
8079
);

0 commit comments

Comments
 (0)