Skip to content

Commit 14fcb08

Browse files
committed
GROOVY-11641: roll back
1 parent 3e441b5 commit 14fcb08

4 files changed

Lines changed: 15 additions & 34 deletions

File tree

src/main/java/groovy/lang/MetaClassImpl.java

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,6 @@
110110
import java.util.concurrent.ConcurrentHashMap;
111111
import java.util.concurrent.ConcurrentMap;
112112
import java.util.function.BiConsumer;
113-
import java.util.regex.Pattern;
114113

115114
import static groovy.lang.Tuple.tuple;
116115
import static java.lang.Character.isUpperCase;
@@ -145,11 +144,6 @@ public class MetaClassImpl implements MetaClass, MutableMetaClass {
145144
private static final MetaMethod AMBIGUOUS_LISTENER_METHOD = new DummyMetaMethod();
146145
private static final Comparator<CachedClass> CACHED_CLASS_NAME_COMPARATOR = Comparator.comparing(CachedClass::getName);
147146
private static final boolean PERMISSIVE_PROPERTY_ACCESS = SystemUtil.getBooleanSafe("groovy.permissive.property.access");
148-
private static final Pattern TRAIT_FIELD;
149-
static {
150-
final var identifier = "[\\p{javaJavaIdentifierStart}&&[^_$]][\\p{javaJavaIdentifierPart}&&[^_$]]*"; // _ and $ are special
151-
TRAIT_FIELD = Pattern.compile("(?:" + identifier + "_)*" + identifier + "(?:\\$" + identifier + ")*__(" + identifier + ")");
152-
}
153147
private static final VMPlugin VM_PLUGIN = VMPluginFactory.getPlugin();
154148

155149
protected final Class theClass;
@@ -2366,12 +2360,6 @@ private void fillStaticPropertyIndex() {
23662360
}
23672361
if (prop != null) {
23682362
staticPropertyIndex.put(name, prop);
2369-
if (!name.startsWith("$") && name.contains("__")) {
2370-
var matcher = TRAIT_FIELD.matcher(name);
2371-
if (matcher.matches()) { // GROOVY-11641
2372-
staticPropertyIndex.putIfAbsent(matcher.group(1), prop);
2373-
}
2374-
}
23752363
}
23762364
};
23772365

src/main/java/org/codehaus/groovy/transform/sc/transformers/PropertyExpressionTransformer.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -40,10 +40,6 @@ class PropertyExpressionTransformer {
4040
}
4141

4242
Expression transformPropertyExpression(final PropertyExpression pe) {
43-
if (pe.getNodeMetaData(StaticTypesMarker.DYNAMIC_RESOLUTION) != null) {
44-
return pe.transformExpression(scTransformer); // GROOVY-11641, etc.
45-
}
46-
4743
MethodNode dmct = pe.getNodeMetaData(StaticTypesMarker.DIRECT_METHOD_CALL_TARGET);
4844
// NOTE: BinaryExpressionTransformer handles the setter
4945
if (dmct != null && dmct.getParameters().length == 0) {

src/main/java/org/codehaus/groovy/transform/trait/TraitReceiverTransformer.java

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,6 @@
5555
import static org.codehaus.groovy.ast.tools.GeneralUtils.propX;
5656
import static org.codehaus.groovy.ast.tools.GeneralUtils.ternaryX;
5757
import static org.codehaus.groovy.ast.tools.GeneralUtils.varX;
58-
import static org.codehaus.groovy.transform.stc.StaticTypesMarker.DYNAMIC_RESOLUTION;
5958

6059
/**
6160
* This expression transformer is used internally by the {@link org.codehaus.groovy.transform.trait.TraitASTTransformation
@@ -124,7 +123,6 @@ public Expression transform(final Expression exp) {
124123
}
125124
} else if (accessedVariable instanceof DynamicVariable && !inClosure) { // GROOVY-8049, GROOVY-9386
126125
PropertyExpression propertyExpression = propX(varX(weaved), vexp.getName());
127-
propertyExpression.putNodeMetaData(DYNAMIC_RESOLUTION, Boolean.TRUE);
128126
propertyExpression.getProperty().setSourcePosition(exp);
129127
return propertyExpression;
130128
}

src/test/groovy/org/codehaus/groovy/transform/traitx/TraitASTTransformationTest.groovy

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import org.codehaus.groovy.ast.ClassHelper
2424
import org.codehaus.groovy.ast.expr.ClassExpression
2525
import org.codehaus.groovy.ast.expr.ListExpression
2626
import org.junit.jupiter.api.Disabled
27+
import org.junit.jupiter.api.RepeatedTest
2728
import org.junit.jupiter.api.Test
2829
import org.junit.jupiter.params.ParameterizedTest
2930
import org.junit.jupiter.params.provider.ValueSource
@@ -431,21 +432,19 @@ final class TraitASTTransformationTest {
431432
'''
432433
}
433434

434-
@Test
435+
@RepeatedTest(10)
435436
void testSimpleTraitInheritanceWithTraitOverridingMethodFromParent() {
436-
10.times {
437-
assertScript shell, '''
438-
trait Top { String methodFromA() { 'A' } }
439-
trait Bottom extends Top {
440-
String methodFromA() { 'B' }
441-
String methodFromB() { 'B' }
442-
}
443-
class Foo implements Bottom {}
444-
def f = new Foo()
445-
assert f.methodFromA() == 'B'
446-
assert f.methodFromB() == 'B'
447-
'''
448-
}
437+
assertScript shell, '''
438+
trait Top { String methodFromA() { 'A' } }
439+
trait Bottom extends Top {
440+
String methodFromA() { 'B' }
441+
String methodFromB() { 'B' }
442+
}
443+
class Foo implements Bottom {}
444+
def f = new Foo()
445+
assert f.methodFromA() == 'B'
446+
assert f.methodFromB() == 'B'
447+
'''
449448
}
450449

451450
@Test
@@ -3714,15 +3713,15 @@ final class TraitASTTransformationTest {
37143713
// GROOVY-11641
37153714
@CompileModesTest
37163715
void testTraitAccessToInheritedStaticMethods4(String mode) {
3717-
assertScript shell, """
3716+
shouldFail shell, """
37183717
$mode
37193718
trait Foo {
37203719
public static final String BANG = '!'
37213720
}
37223721
$mode
37233722
trait Bar extends Foo {
37243723
static staticMethod(String string) {
3725-
string + BANG
3724+
string + BANG // requires qualifier
37263725
}
37273726
}
37283727
$mode

0 commit comments

Comments
 (0)