2424import groovy .lang .Tuple2 ;
2525import groovy .transform .NamedParam ;
2626import groovy .transform .NamedParams ;
27- import groovy .transform .RecordBase ;
2827import groovy .transform .TypeChecked ;
2928import groovy .transform .TypeCheckingMode ;
3029import groovy .transform .stc .ClosureParams ;
116115import org .codehaus .groovy .runtime .DefaultGroovyMethods ;
117116import org .codehaus .groovy .syntax .Token ;
118117import org .codehaus .groovy .syntax .TokenUtil ;
118+ import org .codehaus .groovy .transform .RecordTypeASTTransformation ;
119119import org .codehaus .groovy .transform .StaticTypesTransformation ;
120120import org .codehaus .groovy .transform .trait .Traits ;
121121import org .objectweb .asm .Opcodes ;
@@ -365,7 +365,6 @@ public class StaticTypeCheckingVisitor extends ClassCodeVisitorSupport {
365365 protected static final ClassNode CLOSUREPARAMS_CLASSNODE = ClassHelper .make (ClosureParams .class );
366366 protected static final ClassNode NAMED_PARAMS_CLASSNODE = ClassHelper .make (NamedParams .class );
367367 protected static final ClassNode NAMED_PARAM_CLASSNODE = ClassHelper .make (NamedParam .class );
368- protected static final ClassNode RECORD_BASE_CLASSNODE = ClassHelper .make (RecordBase .class );
369368 @ Deprecated (forRemoval = true , since = "4.0.0" )
370369 protected static final ClassNode LINKEDHASHMAP_CLASSNODE = LinkedHashMap_TYPE ;
371370 protected static final ClassNode ENUMERATION_TYPE = ClassHelper .make (Enumeration .class );
@@ -1541,7 +1540,7 @@ protected void checkGroovyConstructorMap(final Expression receiver, final ClassN
15411540 if (!existsProperty (dummyExpression , /*read*/ false , new PropertyLookup (receiverType , propertyTypes ::add ))) {
15421541 typeCheckingContext .popEnclosingBinaryExpression ();
15431542 addStaticTypeError ("No such property: " + propName + " for class: " + prettyPrintTypeName (receiverType ), keyExpression );
1544- } else if (receiverType . isRecord () || ! receiverType . getAnnotations ( RECORD_BASE_CLASSNODE ). isEmpty ( ) || !addedReadOnlyPropertyError (dummyExpression )) { // GROOVY-11956
1543+ } else if (isRecord (receiverType ) || !addedReadOnlyPropertyError (dummyExpression )) { // GROOVY-11956
15451544 SetterInfo setterInfo = removeSetterInfo (keyExpression );
15461545 if (setterInfo != null ) { // GROOVY-11451: select setter
15471546 ensureValidSetter (entryExpression , keyExpression , valueExpression , setterInfo );
@@ -1559,6 +1558,10 @@ protected void checkGroovyConstructorMap(final Expression receiver, final ClassN
15591558 }
15601559 }
15611560
1561+ private static boolean isRecord (final ClassNode node ) {
1562+ return node .isRecord () || !node .getAnnotations (RecordTypeASTTransformation .MY_TYPE ).isEmpty ();
1563+ }
1564+
15621565 @ Deprecated (forRemoval = true , since = "4.0.0" )
15631566 protected static boolean hasRHSIncompleteGenericTypeInfo (final ClassNode inferredRightExpressionType ) {
15641567 boolean replaceType = false ;
0 commit comments