@@ -2354,6 +2354,70 @@ class ErrorVerifier extends RecursiveAstVisitor<void>
23542354 }
23552355
23562356 Uri libraryUri = _currentLibrary.uri;
2357+
2358+ if (enclosingClass is ExtensionTypeElementImpl ) {
2359+ var conflicts = _inheritanceManager
2360+ .getInterface (enclosingClass)
2361+ .conflicts;
2362+ for (var conflict in conflicts) {
2363+ switch (conflict) {
2364+ case ExtensionTypeConflictingStaticAndInstanceConflict ():
2365+ var declared = conflict.declared;
2366+ if (declared.firstFragment.libraryFragment != _currentUnit) {
2367+ continue ;
2368+ }
2369+ diagnosticReporter.report (
2370+ diag.conflictingStaticAndInstance
2371+ .withArguments (
2372+ className: enclosingClass.displayName,
2373+ memberName: declared.displayName,
2374+ conflictingClassName:
2375+ conflict.inherited.enclosingElement! .displayName,
2376+ )
2377+ .atSourceRange (declared.diagnosticRange (_currentUnit.source)),
2378+ );
2379+ case ExtensionTypeConflictingInheritedMethodAndSetterConflict ():
2380+ if (fragment.isAugmentation) {
2381+ continue ;
2382+ }
2383+ var method = conflict.method;
2384+ var setter = conflict.setter;
2385+ diagnosticReporter.report (
2386+ diag.conflictingInheritedMethodAndSetter
2387+ .withArguments (
2388+ enclosingElementKind: enclosingClass.kind.displayName,
2389+ enclosingElementName: enclosingClass.displayName,
2390+ memberName: conflict.name.name,
2391+ )
2392+ .withContextMessages ([
2393+ method.diagnosticMessage (
2394+ message: formatList (
2395+ "The method is inherited from the {0} '{1}'." ,
2396+ [
2397+ method.enclosingElement! .kind.displayName,
2398+ method.enclosingElement! .name,
2399+ ],
2400+ ),
2401+ ),
2402+ setter.diagnosticMessage (
2403+ message: formatList (
2404+ "The setter is inherited from the {0} '{1}'." ,
2405+ [
2406+ setter.enclosingElement.kind.displayName,
2407+ setter.enclosingElement.name,
2408+ ],
2409+ ),
2410+ ),
2411+ ])
2412+ .atSourceRange (
2413+ enclosingClass.diagnosticRange (_currentUnit.source),
2414+ ),
2415+ );
2416+ }
2417+ }
2418+ return ;
2419+ }
2420+
23572421 var conflictingDeclaredNames = < String > {};
23582422
23592423 // method declared in the enclosing class vs. inherited getter/setter
@@ -2400,11 +2464,6 @@ class ErrorVerifier extends RecursiveAstVisitor<void>
24002464 }
24012465 }
24022466
2403- // Extension type methods preclude accessors.
2404- if (enclosingClass is ExtensionTypeElementImpl ) {
2405- continue ;
2406- }
2407-
24082467 void reportFieldConflict (InternalPropertyAccessorElement inherited) {
24092468 diagnosticReporter.report (
24102469 diag.conflictingMethodAndField
@@ -2458,10 +2517,6 @@ class ErrorVerifier extends RecursiveAstVisitor<void>
24582517 );
24592518 conflictingDeclaredNames.add (name);
24602519 } else if (inherited is InternalMethodElement ) {
2461- // Extension type accessors preclude inherited accessors/methods.
2462- if (enclosingClass is ExtensionTypeElementImpl ) {
2463- continue ;
2464- }
24652520 diagnosticReporter.report (
24662521 diag.conflictingFieldAndMethod
24672522 .withArguments (
@@ -2488,7 +2543,7 @@ class ErrorVerifier extends RecursiveAstVisitor<void>
24882543 }
24892544 var setterName = methodName.forSetter;
24902545 var setter = inherited[setterName];
2491- if (setter is InternalPropertyAccessorElement ) {
2546+ if (setter is InternalSetterElement ) {
24922547 diagnosticReporter.report (
24932548 diag.conflictingInheritedMethodAndSetter
24942549 .withArguments (
@@ -2497,33 +2552,23 @@ class ErrorVerifier extends RecursiveAstVisitor<void>
24972552 memberName: methodName.name,
24982553 )
24992554 .withContextMessages ([
2500- DiagnosticMessageImpl (
2501- filePath:
2502- method.firstFragment.libraryFragment.source.fullName,
2555+ method.diagnosticMessage (
25032556 message: formatList (
25042557 "The method is inherited from the {0} '{1}'." ,
25052558 [
25062559 method.enclosingElement! .kind.displayName,
25072560 method.enclosingElement! .name,
25082561 ],
25092562 ),
2510- offset: method.firstFragment.nameOffset! ,
2511- length: method.firstFragment.name! .length,
2512- url: null ,
25132563 ),
2514- DiagnosticMessageImpl (
2515- filePath:
2516- setter.firstFragment.libraryFragment.source.fullName,
2564+ setter.diagnosticMessage (
25172565 message: formatList (
25182566 "The setter is inherited from the {0} '{1}'." ,
25192567 [
25202568 setter.enclosingElement.kind.displayName,
25212569 setter.enclosingElement.name,
25222570 ],
25232571 ),
2524- offset: setter.firstFragment.nameOffset! ,
2525- length: setter.firstFragment.name! .length,
2526- url: null ,
25272572 ),
25282573 ])
25292574 .atSourceRange (
0 commit comments