@@ -527,21 +527,6 @@ class VariableUseGenerator extends Generator {
527527      forEffect:  voidContext,
528528      isPost:  true ,
529529    );
530-     /*       
531-     Expression value = _forest.createIntLiteral(operatorOffset, 1); 
532-     if (voidContext) { 
533-       return buildCompoundAssignment(binaryOperator, value, 
534-           operatorOffset: operatorOffset, 
535-           voidContext: voidContext, 
536-           isPostIncDec: true); 
537-     } 
538-     VariableDeclarationImpl read = 
539-         _helper.createVariableDeclarationForValue(_createRead()); 
540-     Expression binary = _helper.forest.createBinary(operatorOffset, 
541-         _helper.createVariableGet(read, fileOffset), binaryOperator, value); 
542-     VariableDeclarationImpl write = _helper.createVariableDeclarationForValue( 
543-         _createWrite(operatorOffset, binary)); 
544-     return new LocalIncDec(read, write)..fileOffset = operatorOffset;*/ 
545530  }
546531
547532  @override 
@@ -2690,7 +2675,7 @@ class ExtensionInstanceAccessGenerator extends Generator {
26902675class  ExplicitExtensionInstanceAccessGenerator  extends  Generator  {
26912676  /// The file offset used for the explicit extension application type 
26922677  /// arguments. 
2693-    final  int  extensionTypeArgumentOffset;
2678+    final  int ?  extensionTypeArgumentOffset;
26942679
26952680  final  Extension  extension ;
26962681
@@ -2752,53 +2737,53 @@ class ExplicitExtensionInstanceAccessGenerator extends Generator {
27522737       ),
27532738       super (helper, token);
27542739
2755-   factory  ExplicitExtensionInstanceAccessGenerator .fromBuilder (
2756-     ExpressionGeneratorHelper  helper,
2757-     Token  token,
2758-     int  extensionTypeArgumentOffset,
2759-     Extension  extension ,
2760-     Name  targetName ,
2761-     MemberBuilder ?  getterBuilder ,
2762-     MemberBuilder ?  setterBuilder ,
2763-     Expression  receiver,
2764-     List <DartType >?  explicitTypeArguments,
2765-     int  extensionTypeParameterCount, { 
2740+   factory  ExplicitExtensionInstanceAccessGenerator .fromBuilder ({ 
2741+     required   ExpressionGeneratorHelper  helper,
2742+     required   Token  token,
2743+     required   int ?  extensionTypeArgumentOffset,
2744+     required   Extension  extension ,
2745+     required   Name  name ,
2746+     required   MemberBuilder ?  getter ,
2747+     required   MemberBuilder ?  setter ,
2748+     required   Expression  receiver,
2749+     required   List <DartType >?  explicitTypeArguments,
2750+     required   int  extensionTypeParameterCount,
27662751    required  bool  isNullAware,
27672752  }) {
2768-     assert (getterBuilder  !=  null  ||  setterBuilder  !=  null );
2753+     assert (getter  !=  null  ||  setter  !=  null );
27692754    Procedure ?  readTarget;
27702755    Procedure ?  invokeTarget;
2771-     if  (getterBuilder  !=  null ) {
2772-       assert (! getterBuilder .isStatic);
2773-       if  (getterBuilder  is  PropertyBuilder ) {
2774-         assert (! getterBuilder .hasConcreteField);
2775-         readTarget =  getterBuilder .readTarget as  Procedure ? ;
2776-       } else  if  (getterBuilder  is  MethodBuilder ) {
2777-         if  (getterBuilder .isOperator) {
2778-           invokeTarget =  getterBuilder .invokeTarget as  Procedure ? ;
2756+     if  (getter  !=  null ) {
2757+       assert (! getter .isStatic);
2758+       if  (getter  is  PropertyBuilder ) {
2759+         assert (! getter .hasConcreteField);
2760+         readTarget =  getter .readTarget as  Procedure ? ;
2761+       } else  if  (getter  is  MethodBuilder ) {
2762+         if  (getter .isOperator) {
2763+           invokeTarget =  getter .invokeTarget as  Procedure ? ;
27792764        } else  {
2780-           readTarget =  getterBuilder .readTarget as  Procedure ? ;
2781-           invokeTarget =  getterBuilder .invokeTarget as  Procedure ? ;
2765+           readTarget =  getter .readTarget as  Procedure ? ;
2766+           invokeTarget =  getter .invokeTarget as  Procedure ? ;
27822767        }
27832768      } else  {
27842769        return  unhandled (
2785-           "$getterBuilder  (${getterBuilder .runtimeType })" ,
2770+           "$getter  (${getter .runtimeType })" ,
27862771          "InstanceExtensionAccessGenerator.fromBuilder" ,
27872772          offsetForToken (token),
27882773          helper.uri,
27892774        );
27902775      }
27912776    }
27922777    Procedure ?  writeTarget;
2793-     if  (setterBuilder  !=  null ) {
2794-       assert (! setterBuilder .isStatic);
2795-       if  (setterBuilder  is  PropertyBuilder ) {
2796-         if  (setterBuilder .hasSetter) {
2797-           writeTarget =  setterBuilder .writeTarget as  Procedure ? ;
2778+     if  (setter  !=  null ) {
2779+       assert (! setter .isStatic);
2780+       if  (setter  is  PropertyBuilder ) {
2781+         if  (setter .hasSetter) {
2782+           writeTarget =  setter .writeTarget as  Procedure ? ;
27982783        }
27992784      } else  {
28002785        return  unhandled (
2801-           "$setterBuilder  (${setterBuilder .runtimeType })" ,
2786+           "$setter  (${setter .runtimeType })" ,
28022787          "InstanceExtensionAccessGenerator.fromBuilder" ,
28032788          offsetForToken (token),
28042789          helper.uri,
@@ -2810,7 +2795,7 @@ class ExplicitExtensionInstanceAccessGenerator extends Generator {
28102795      token,
28112796      extensionTypeArgumentOffset,
28122797      extension ,
2813-       targetName ,
2798+       name ,
28142799      readTarget,
28152800      invokeTarget,
28162801      writeTarget,
@@ -2853,6 +2838,7 @@ class ExplicitExtensionInstanceAccessGenerator extends Generator {
28532838        name:  targetName,
28542839        tearOff:  getter,
28552840        isNullAware:  isNullAware,
2841+         extensionTypeArgumentOffset:  extensionTypeArgumentOffset,
28562842      )..fileOffset =  fileOffset;
28572843    } else  {
28582844      return  new  ExtensionGet .explicit (
@@ -2862,6 +2848,7 @@ class ExplicitExtensionInstanceAccessGenerator extends Generator {
28622848        name:  targetName,
28632849        getter:  getter,
28642850        isNullAware:  isNullAware,
2851+         extensionTypeArgumentOffset:  extensionTypeArgumentOffset,
28652852      )..fileOffset =  fileOffset;
28662853    }
28672854  }
@@ -2898,6 +2885,7 @@ class ExplicitExtensionInstanceAccessGenerator extends Generator {
28982885        value:  value,
28992886        forEffect:  forEffect,
29002887        isNullAware:  isNullAware,
2888+         extensionTypeArgumentOffset:  extensionTypeArgumentOffset,
29012889      )..fileOffset =  offset;
29022890    }
29032891  }
@@ -2930,6 +2918,7 @@ class ExplicitExtensionInstanceAccessGenerator extends Generator {
29302918      binaryOffset:  offset,
29312919      writeOffset:  fileOffset,
29322920      isNullAware:  isNullAware,
2921+       extensionTypeArgumentOffset:  extensionTypeArgumentOffset,
29332922    )..fileOffset =  offset;
29342923  }
29352924
@@ -2964,6 +2953,7 @@ class ExplicitExtensionInstanceAccessGenerator extends Generator {
29642953      binaryOffset:  operatorOffset,
29652954      writeOffset:  fileOffset,
29662955      isNullAware:  isNullAware,
2956+       extensionTypeArgumentOffset:  extensionTypeArgumentOffset,
29672957    )..fileOffset =  operatorOffset;
29682958  }
29692959
@@ -2992,6 +2982,7 @@ class ExplicitExtensionInstanceAccessGenerator extends Generator {
29922982      isInc:  binaryOperator ==  plusName,
29932983      forEffect:  forEffect,
29942984      isNullAware:  isNullAware,
2985+       extensionTypeArgumentOffset:  extensionTypeArgumentOffset,
29952986    )..fileOffset =  operatorOffset;
29962987  }
29972988
@@ -3107,7 +3098,7 @@ class ExplicitExtensionInstanceAccessGenerator extends Generator {
31073098class  ExplicitExtensionIndexedAccessGenerator  extends  Generator  {
31083099  /// The file offset used for the explicit extension application type 
31093100  /// arguments. 
3110-    final  int  extensionTypeArgumentOffset;
3101+    final  int ?  extensionTypeArgumentOffset;
31113102
31123103  final  Extension  extension ;
31133104
@@ -3155,7 +3146,7 @@ class ExplicitExtensionIndexedAccessGenerator extends Generator {
31553146  factory  ExplicitExtensionIndexedAccessGenerator .fromBuilder (
31563147    ExpressionGeneratorHelper  helper,
31573148    Token  token,
3158-     int  extensionTypeArgumentOffset,
3149+     int ?  extensionTypeArgumentOffset,
31593150    Extension  extension ,
31603151    MemberBuilder ?  getterBuilder,
31613152    MemberBuilder ?  setterBuilder,
@@ -3204,6 +3195,7 @@ class ExplicitExtensionIndexedAccessGenerator extends Generator {
32043195      getter,
32053196      index,
32063197      isNullAware:  isNullAware,
3198+       extensionTypeArgumentOffset:  extensionTypeArgumentOffset,
32073199    )..fileOffset =  fileOffset;
32083200  }
32093201
@@ -3223,6 +3215,7 @@ class ExplicitExtensionIndexedAccessGenerator extends Generator {
32233215      value,
32243216      isNullAware:  isNullAware,
32253217      forEffect:  voidContext,
3218+       extensionTypeArgumentOffset:  extensionTypeArgumentOffset,
32263219    )..fileOffset =  fileOffset;
32273220  }
32283221
@@ -3255,6 +3248,7 @@ class ExplicitExtensionIndexedAccessGenerator extends Generator {
32553248      writeOffset:  fileOffset,
32563249      forEffect:  voidContext,
32573250      isNullAware:  isNullAware,
3251+       extensionTypeArgumentOffset:  extensionTypeArgumentOffset,
32583252    )..fileOffset =  offset;
32593253  }
32603254
@@ -3291,6 +3285,7 @@ class ExplicitExtensionIndexedAccessGenerator extends Generator {
32913285      forEffect:  voidContext,
32923286      forPostIncDec:  isPostIncDec,
32933287      isNullAware:  isNullAware,
3288+       extensionTypeArgumentOffset:  extensionTypeArgumentOffset,
32943289    );
32953290  }
32963291
@@ -3380,14 +3375,16 @@ class ExplicitExtensionAccessGenerator extends Generator {
33803375  final  ExtensionBuilder  extensionBuilder;
33813376  final  Expression  receiver;
33823377  final  List <DartType >?  explicitTypeArguments;
3383- 
3384-   ExplicitExtensionAccessGenerator (
3385-     ExpressionGeneratorHelper  helper,
3386-     Token  token,
3387-     this .extensionBuilder,
3388-     this .receiver,
3389-     this .explicitTypeArguments,
3390-   ) :  super (helper, token);
3378+   final  int ?  extensionTypeArgumentOffset;
3379+ 
3380+   ExplicitExtensionAccessGenerator ({
3381+     required  ExpressionGeneratorHelper  helper,
3382+     required  Token  token,
3383+     required  this .extensionBuilder,
3384+     required  this .receiver,
3385+     required  this .explicitTypeArguments,
3386+     required  this .extensionTypeArgumentOffset,
3387+   }) :  super (helper, token);
33913388
33923389  @override 
33933390  // Coverage-ignore(suite): Not run. 
@@ -3471,19 +3468,16 @@ class ExplicitExtensionAccessGenerator extends Generator {
34713468      );
34723469    }
34733470    return  new  ExplicitExtensionInstanceAccessGenerator .fromBuilder (
3474-       _helper,
3475-       token,
3476-       // TODO(johnniwinther): Improve this. This is the name of the extension 
3477-       // and not the type arguments (or arguments if type arguments are 
3478-       // omitted). 
3479-       fileOffset,
3480-       extensionBuilder.extension ,
3481-       name,
3482-       getter,
3483-       setter,
3484-       receiver,
3485-       explicitTypeArguments,
3486-       extensionBuilder.typeParameters? .length ??  0 ,
3471+       helper:  _helper,
3472+       token:  token,
3473+       extensionTypeArgumentOffset:  extensionTypeArgumentOffset,
3474+       extension :  extensionBuilder.extension ,
3475+       name:  name,
3476+       getter:  getter,
3477+       setter:  setter,
3478+       receiver:  receiver,
3479+       explicitTypeArguments:  explicitTypeArguments,
3480+       extensionTypeParameterCount:  extensionBuilder.typeParameters? .length ??  0 ,
34873481      isNullAware:  isNullAware,
34883482    );
34893483  }
@@ -3609,10 +3603,7 @@ class ExplicitExtensionAccessGenerator extends Generator {
36093603    return  new  ExplicitExtensionIndexedAccessGenerator .fromBuilder (
36103604      _helper,
36113605      token,
3612-       // TODO(johnniwinther): Improve this. This is the name of the extension 
3613-       // and not the type arguments (or arguments if type arguments are 
3614-       // omitted). 
3615-       fileOffset,
3606+       extensionTypeArgumentOffset,
36163607      extensionBuilder.extension ,
36173608      getter,
36183609      setter,
@@ -4551,6 +4542,7 @@ class TypeUseGenerator extends AbstractReadOnlyAccessGenerator {
45514542      List <DartType >?  explicitTypeArguments =  getExplicitTypeArguments (
45524543        arguments,
45534544      );
4545+       int ?  extensionTypeArgumentOffset;
45544546      if  (explicitTypeArguments !=  null ) {
45554547        int  typeParameterCount =  extensionBuilder.typeParameters? .length ??  0 ;
45564548        if  (explicitTypeArguments.length !=  typeParameterCount) {
@@ -4563,14 +4555,17 @@ class TypeUseGenerator extends AbstractReadOnlyAccessGenerator {
45634555            lengthForToken (token),
45644556          );
45654557        }
4558+         // TODO(johnniwinther): Provide the type arguments offsets. 
4559+         extensionTypeArgumentOffset =  arguments.fileOffset;
45664560      }
45674561      // TODO(johnniwinther): Check argument and type argument count. 
45684562      return  new  ExplicitExtensionAccessGenerator (
4569-         _helper,
4570-         token,
4571-         declaration as  ExtensionBuilder ,
4572-         arguments.positional.single,
4573-         explicitTypeArguments,
4563+         helper:  _helper,
4564+         token:  token,
4565+         extensionBuilder:  declaration as  ExtensionBuilder ,
4566+         receiver:  arguments.positional.single,
4567+         explicitTypeArguments:  explicitTypeArguments,
4568+         extensionTypeArgumentOffset:  extensionTypeArgumentOffset,
45744569      );
45754570    } else  {
45764571      return  _helper.buildConstructorInvocation (
0 commit comments