22// for details. All rights reserved. Use of this source code is governed by a
33// BSD-style license that can be found in the LICENSE file.
44
5- import 'package:analyzer/dart/element/element .dart' ;
5+ import 'package:analyzer/dart/element/element2 .dart' ;
66import 'package:analyzer/dart/element/type.dart' ;
77import 'package:analyzer/error/listener.dart' ;
88import 'package:analyzer/src/dart/element/inheritance_manager3.dart' ;
@@ -22,59 +22,59 @@ class GetterSetterTypesVerifier {
2222 }) : _typeSystem = typeSystem,
2323 _errorReporter = errorReporter;
2424
25- void checkExtension (ExtensionElement element) {
26- for (var getter in element.accessors) {
27- if (getter.isGetter) {
28- _checkLocalGetter (getter);
29- }
25+ void checkExtension (ExtensionElement2 element) {
26+ for (var getter in element.getters2) {
27+ _checkLocalGetter (getter);
3028 }
3129 }
3230
33- void checkExtensionType (ExtensionTypeElement element, Interface interface ) {
31+ void checkExtensionType (ExtensionTypeElement2 element, Interface interface ) {
3432 checkInterface (element, interface );
35- checkStaticAccessors (element.accessors );
33+ checkStaticGetters (element.getters2 );
3634 }
3735
38- void checkInterface (InterfaceElement element, Interface interface ) {
39- var libraryUri = element.library .source.uri;
36+ void checkInterface (InterfaceElement2 element, Interface interface ) {
37+ var libraryUri = element.library2.firstFragment .source.uri;
4038
41- for (var name in interface .map.keys) {
42- if (! name.isAccessibleFor (libraryUri)) continue ;
39+ var interfaceMap = interface .map2;
40+ for (var entry in interfaceMap.entries) {
41+ var getterName = entry.key;
42+ if (! getterName.isAccessibleFor (libraryUri)) continue ;
4343
44- var getter = interface .map[name] ! ;
44+ var getter = entry.value ;
4545 if (getter.kind == ElementKind .GETTER ) {
46- var setter = interface .map[ Name (libraryUri, '${ name . name }=' ) ];
47- if (setter != null && setter.parameters .length == 1 ) {
46+ var setter = interfaceMap[getterName.forSetter ];
47+ if (setter != null && setter.formalParameters .length == 1 ) {
4848 var getterType = getter.returnType;
49- var setterType = setter.parameters [0 ].type;
49+ var setterType = setter.formalParameters [0 ].type;
5050 if (! _typeSystem.isSubtypeOf (getterType, setterType)) {
51- Element errorElement;
52- if (getter.enclosingElement3 == element) {
53- if (element is ExtensionTypeElement &&
54- element.representation.getter == getter) {
51+ Element2 errorElement;
52+ if (getter.enclosingElement2 == element) {
53+ if (element is ExtensionTypeElement2 &&
54+ element.representation2.getter2 == getter) {
5555 errorElement = setter;
5656 } else {
5757 errorElement = getter;
5858 }
59- } else if (setter.enclosingElement3 == element) {
59+ } else if (setter.enclosingElement2 == element) {
6060 errorElement = setter;
6161 } else {
6262 errorElement = element;
6363 }
6464
6565 var getterName = getter.displayName;
66- if (getter.enclosingElement3 != element) {
67- var getterClassName = getter.enclosingElement3 .displayName;
66+ if (getter.enclosingElement2 != element) {
67+ var getterClassName = getter.enclosingElement2 ! .displayName;
6868 getterName = '$getterClassName .$getterName ' ;
6969 }
7070
7171 var setterName = setter.displayName;
72- if (setter.enclosingElement3 != element) {
73- var setterClassName = setter.enclosingElement3 .displayName;
72+ if (setter.enclosingElement2 != element) {
73+ var setterClassName = setter.enclosingElement2 ! .displayName;
7474 setterName = '$setterClassName .$setterName ' ;
7575 }
7676
77- _errorReporter.atElement (
77+ _errorReporter.atElement2 (
7878 errorElement,
7979 CompileTimeErrorCode .GETTER_NOT_SUBTYPE_SETTER_TYPES ,
8080 arguments: [getterName, getterType, setterType, setterName],
@@ -85,41 +85,48 @@ class GetterSetterTypesVerifier {
8585 }
8686 }
8787
88- void checkStaticAccessors (List <PropertyAccessorElement > accessors ) {
89- for (var getter in accessors ) {
90- if (getter.isStatic && getter.isGetter ) {
88+ void checkStaticGetters (List <GetterElement > getters ) {
89+ for (var getter in getters ) {
90+ if (getter.isStatic) {
9191 _checkLocalGetter (getter);
9292 }
9393 }
9494 }
9595
96- void _checkLocalGetter (PropertyAccessorElement getter) {
97- assert (getter.isGetter);
98- var setter = getter.correspondingSetter;
99- if (setter != null ) {
100- var getterType = _getGetterType (getter);
101- var setterType = _getSetterType (setter);
102- if (setterType != null ) {
103- if (! _typeSystem.isSubtypeOf (getterType, setterType)) {
104- var name = getter.name;
105- _errorReporter.atElement (
106- getter,
107- CompileTimeErrorCode .GETTER_NOT_SUBTYPE_SETTER_TYPES ,
108- arguments: [name, getterType, setterType, name],
109- );
110- }
111- }
96+ void _checkLocalGetter (GetterElement getter) {
97+ var name = getter.name3;
98+ if (name == null ) {
99+ return ;
100+ }
101+
102+ var setter = getter.variable3? .setter2;
103+ if (setter == null ) {
104+ return ;
105+ }
106+
107+ var setterType = _getSetterType (setter);
108+ if (setterType == null ) {
109+ return ;
110+ }
111+
112+ var getterType = _getGetterType (getter);
113+ if (! _typeSystem.isSubtypeOf (getterType, setterType)) {
114+ _errorReporter.atElement2 (
115+ getter,
116+ CompileTimeErrorCode .GETTER_NOT_SUBTYPE_SETTER_TYPES ,
117+ arguments: [name, getterType, setterType, name],
118+ );
112119 }
113120 }
114121
115122 /// Return the return type of the [getter] .
116- static DartType _getGetterType (PropertyAccessorElement getter) {
123+ static DartType _getGetterType (GetterElement getter) {
117124 return getter.returnType;
118125 }
119126
120127 /// Return the type of the first parameter of the [setter] .
121- static DartType ? _getSetterType (PropertyAccessorElement setter) {
122- var parameters = setter.parameters ;
128+ static DartType ? _getSetterType (SetterElement setter) {
129+ var parameters = setter.formalParameters ;
123130 if (parameters.isNotEmpty) {
124131 return parameters[0 ].type;
125132 } else {
0 commit comments