diff --git a/Rewrite/src/Rewrite.Java/JavaPrinter.cs b/Rewrite/src/Rewrite.Java/JavaPrinter.cs index fa80fd95..48d224a5 100644 --- a/Rewrite/src/Rewrite.Java/JavaPrinter.cs +++ b/Rewrite/src/Rewrite.Java/JavaPrinter.cs @@ -369,13 +369,13 @@ public override J VisitBreak(J.Break breakStatement, PrintOutputCapture

p) public override J VisitCase(J.Case @case, PrintOutputCapture

p) { BeforeSyntax(@case, Space.Location.CASE_PREFIX, p); - Expression elem = @case.Expressions[0]; + Expression elem = (Expression)@case.CaseLabels[0]; if (elem is not J.Identifier identifier || !identifier.SimpleName.Equals("default")) { p.Append("case"); } - VisitContainer("", @case.Padding.Expressions, JContainer.Location.CASE_EXPRESSION, ",", "", p); + VisitContainer("", @case.Padding.CaseLabels, JContainer.Location.CASE_CASE_LABELS, ",", "", p); VisitSpace(@case.Padding.Statements.Before, Space.Location.CASE, p); p.Append(@case.CaseType == J.Case.Types.Statement ? ":" : "->"); VisitStatements(@case.Padding.Statements.Padding.Elements, JRightPadded.Location.CASE, p); diff --git a/Rewrite/src/Rewrite.Java/Tree/Erroneous.cs b/Rewrite/src/Rewrite.Java/Tree/Erroneous.cs new file mode 100644 index 00000000..e3e2e791 --- /dev/null +++ b/Rewrite/src/Rewrite.Java/Tree/Erroneous.cs @@ -0,0 +1,10 @@ +namespace Rewrite.RewriteJava.Tree; + +partial interface J +{ + partial class Erroneous + { + public JavaType? Type => JavaType.Unknown.Instance; + public Erroneous WithType(JavaType? type) => this; + } +} diff --git a/Rewrite/src/Rewrite.Java/Tree/JContainer.cs b/Rewrite/src/Rewrite.Java/Tree/JContainer.cs index 7adc852e..ea9d96eb 100644 --- a/Rewrite/src/Rewrite.Java/Tree/JContainer.cs +++ b/Rewrite/src/Rewrite.Java/Tree/JContainer.cs @@ -149,7 +149,7 @@ public record Location(Space.Location BeforeLocation, JRightPadded.Location Elem public static readonly Location ANY = new(Space.Location.ANY, JRightPadded.Location.ANY); public static readonly Location ANNOTATION_ARGUMENTS = new(Space.Location.ANNOTATION_ARGUMENTS, JRightPadded.Location.ANNOTATION_ARGUMENT); public static readonly Location CASE = new(Space.Location.CASE, JRightPadded.Location.CASE); - public static readonly Location CASE_EXPRESSION = new(Space.Location.CASE_EXPRESSION, JRightPadded.Location.CASE_EXPRESSION); + public static readonly Location CASE_CASE_LABELS = new(Space.Location.CASE_CASE_LABELS, JRightPadded.Location.CASE_CASE_LABELS); public static readonly Location IMPLEMENTS = new(Space.Location.IMPLEMENTS, JRightPadded.Location.IMPLEMENTS); public static readonly Location PERMITS = new(Space.Location.PERMITS, JRightPadded.Location.PERMITS); public static readonly Location LANGUAGE_EXTENSION = new(Space.Location.LANGUAGE_EXTENSION, JRightPadded.Location.LANGUAGE_EXTENSION); diff --git a/Rewrite/src/Rewrite.Java/Tree/JRightPadded.cs b/Rewrite/src/Rewrite.Java/Tree/JRightPadded.cs index 95de6828..e3fc0334 100644 --- a/Rewrite/src/Rewrite.Java/Tree/JRightPadded.cs +++ b/Rewrite/src/Rewrite.Java/Tree/JRightPadded.cs @@ -143,7 +143,7 @@ public record Location(Space.Location AfterLocation) public static readonly Location ARRAY_INDEX = new(Space.Location.ARRAY_INDEX_SUFFIX); public static readonly Location BLOCK_STATEMENT = new(Space.Location.BLOCK_STATEMENT_SUFFIX); public static readonly Location CASE = new(Space.Location.CASE_SUFFIX); - public static readonly Location CASE_EXPRESSION = new(Space.Location.CASE_EXPRESSION); + public static readonly Location CASE_CASE_LABELS = new(Space.Location.CASE_CASE_LABELS); public static readonly Location CASE_BODY = new(Space.Location.CASE_BODY); public static readonly Location CATCH_ALTERNATIVE = new(Space.Location.CATCH_ALTERNATIVE_SUFFIX); public static readonly Location DIMENSION = new(Space.Location.DIMENSION_SUFFIX); diff --git a/Rewrite/src/Rewrite.Java/Tree/Space.cs b/Rewrite/src/Rewrite.Java/Tree/Space.cs index b4b5827c..e35a5835 100644 --- a/Rewrite/src/Rewrite.Java/Tree/Space.cs +++ b/Rewrite/src/Rewrite.Java/Tree/Space.cs @@ -218,7 +218,7 @@ public enum Location CASE, CASE_PREFIX, CASE_BODY, - CASE_EXPRESSION, + CASE_CASE_LABELS, CASE_SUFFIX, CATCH_ALTERNATIVE_SUFFIX, CATCH_PREFIX, @@ -344,6 +344,7 @@ public enum Location WILDCARD_BOUND, WILDCARD_PREFIX, YIELD_PREFIX, + ERRONEOUS_PREFIX, } private static Space Build(string str, IList comments) diff --git a/Rewrite/src/Rewrite.Java/Tree/SwitchExpression.cs b/Rewrite/src/Rewrite.Java/Tree/SwitchExpression.cs index b0512c81..c5f12145 100644 --- a/Rewrite/src/Rewrite.Java/Tree/SwitchExpression.cs +++ b/Rewrite/src/Rewrite.Java/Tree/SwitchExpression.cs @@ -25,7 +25,7 @@ public override J VisitBlock(J.Block block, StrongBox javaType) if (block.Statements.Count != 0) { var caze = (J.Case)block.Statements[0]; - javaType.Value = caze.Expressions[0].Type!; + javaType.Value = (caze.CaseLabels[0] as Expression)?.Type!; } return block;