From ea217d16d5a1d635ac7fe961b98c2ad993c14ac5 Mon Sep 17 00:00:00 2001 From: Ruben Date: Thu, 6 Jun 2024 12:07:32 +0200 Subject: [PATCH] Revert "feat: changes in Grammar and Parser so typeless Recs get recognised" This reverts commit 7650813bb72f5a0f197d9ec23d2e82d083bb4827. --- resources/bytecode/javFiles/SwitchInfered.jav | 17 ----------------- .../dhbwstuttgart/parser/antlr/Java17Parser.g4 | 6 ++---- .../SyntaxTreeGenerator/StatementGenerator.java | 2 +- src/test/java/TestComplete.java | 9 --------- 4 files changed, 3 insertions(+), 31 deletions(-) delete mode 100644 resources/bytecode/javFiles/SwitchInfered.jav diff --git a/resources/bytecode/javFiles/SwitchInfered.jav b/resources/bytecode/javFiles/SwitchInfered.jav deleted file mode 100644 index d11c760d..00000000 --- a/resources/bytecode/javFiles/SwitchInfered.jav +++ /dev/null @@ -1,17 +0,0 @@ -import java.lang.Integer; -import java.lang.Object; -import java.lang.Float; - -public record Rec(Integer a, Object b) {} - -public class SwitchInfered { - public main(o) { - return switch (o) { - case Rec(a, b) -> a + b; - case Rec(Integer a, Float b) -> a + 10; - case Rec(Integer a, Rec(Integer b, Integer c)) -> a + b + c; - case Integer i -> i; - default -> 0; - }; - } -} \ No newline at end of file diff --git a/src/main/antlr4/de/dhbwstuttgart/parser/antlr/Java17Parser.g4 b/src/main/antlr4/de/dhbwstuttgart/parser/antlr/Java17Parser.g4 index 891c47b3..be87c4d7 100644 --- a/src/main/antlr4/de/dhbwstuttgart/parser/antlr/Java17Parser.g4 +++ b/src/main/antlr4/de/dhbwstuttgart/parser/antlr/Java17Parser.g4 @@ -658,12 +658,10 @@ primaryPattern recordPattern : typeType recordStructurePattern identifier? - //| recordStructurePattern identifier? ; typePattern : variableModifier* typeType identifier - | variableModifier* identifier ; recordStructurePattern @@ -719,10 +717,10 @@ switchLabeledRule ; switchLabelCase - : CASE NULL_LITERAL (ARROW | COLON) #labeledRuleNull + : CASE expressionList (ARROW | COLON) #labeledRuleExprList + | CASE NULL_LITERAL (ARROW | COLON) #labeledRuleNull | CASE pattern (ARROW | COLON) #labeledRulePattern | DEFAULT (ARROW | COLON) #labeledRuleDefault - | CASE expressionList (ARROW | COLON) #labeledRuleExprList ; // Java20 diff --git a/src/main/java/de/dhbwstuttgart/parser/SyntaxTreeGenerator/StatementGenerator.java b/src/main/java/de/dhbwstuttgart/parser/SyntaxTreeGenerator/StatementGenerator.java index 11716318..f4587b6b 100644 --- a/src/main/java/de/dhbwstuttgart/parser/SyntaxTreeGenerator/StatementGenerator.java +++ b/src/main/java/de/dhbwstuttgart/parser/SyntaxTreeGenerator/StatementGenerator.java @@ -457,7 +457,7 @@ public class StatementGenerator { case TPatternContext tPattern: TypePatternContext typePattern = tPattern.typePattern(); var text = typePattern.identifier().getText(); - var type = typePattern.typeType() == null ? TypePlaceholder.fresh(typePattern.getStart()) : TypeGenerator.convert(typePattern.typeType(), reg, generics); + var type = TypeGenerator.convert(typePattern.typeType(), reg, generics); localVars.put(text, type); return new FormalParameter(text, type, typePattern.getStart()); case RPatternContext rPattern: diff --git a/src/test/java/TestComplete.java b/src/test/java/TestComplete.java index 9d318ba6..fd4b8b5e 100644 --- a/src/test/java/TestComplete.java +++ b/src/test/java/TestComplete.java @@ -673,15 +673,6 @@ public class TestComplete { assertEquals(swtch.invoke(instance, "Some string"), 0); } - @Ignore("Not implemented") - @Test - public void testSwitchInfered() throws Exception { - var classFiles = generateClassFiles(new ByteArrayClassLoader(), "SwitchInfered.jav"); - var clazz = classFiles.get("SwitchInfered"); - var instance = clazz.getDeclaredConstructor().newInstance(); - var swtch = clazz.getDeclaredMethod("main", Object.class); - } - @Ignore("Not implemented") @Test public void testSwitch2() throws Exception {