aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLiam Miller-Cushon <cushon@google.com>2022-05-31 12:39:45 -0700
committerJavac Team <javac-team+copybara@google.com>2022-05-31 12:40:30 -0700
commitf42d03f5b18a61a3cdaf2f903e54618771c8797a (patch)
treed5e6339a186f9566f52972c27b3068cb72d7aba3
parente0f2870e53290cfca4a6c09266aab86ea6ee10fd (diff)
downloadturbine-f42d03f5b18a61a3cdaf2f903e54618771c8797a.tar.gz
Handle `sealed` psuedo-modifier on nested classes
PiperOrigin-RevId: 452115286
-rw-r--r--java/com/google/turbine/parse/Parser.java5
-rw-r--r--javatests/com/google/turbine/lower/LowerIntegrationTest.java1
-rw-r--r--javatests/com/google/turbine/lower/testdata/sealed_nested.test7
3 files changed, 13 insertions, 0 deletions
diff --git a/java/com/google/turbine/parse/Parser.java b/java/com/google/turbine/parse/Parser.java
index c370ad8..9417801 100644
--- a/java/com/google/turbine/parse/Parser.java
+++ b/java/com/google/turbine/parse/Parser.java
@@ -719,6 +719,11 @@ public class Parser {
case IDENT:
Ident ident = ident();
+ if (ident.value().equals("sealed")) {
+ next();
+ access.add(TurbineModifier.SEALED);
+ break;
+ }
if (ident.value().equals("non")) {
int pos = position;
next();
diff --git a/javatests/com/google/turbine/lower/LowerIntegrationTest.java b/javatests/com/google/turbine/lower/LowerIntegrationTest.java
index 7ae9b1b..94f1d07 100644
--- a/javatests/com/google/turbine/lower/LowerIntegrationTest.java
+++ b/javatests/com/google/turbine/lower/LowerIntegrationTest.java
@@ -48,6 +48,7 @@ public class LowerIntegrationTest {
"record.test", 16, //
"record2.test", 16,
"sealed.test", 17,
+ "sealed_nested.test", 17,
"textblock.test", 15);
@Parameters(name = "{index}: {0}")
diff --git a/javatests/com/google/turbine/lower/testdata/sealed_nested.test b/javatests/com/google/turbine/lower/testdata/sealed_nested.test
new file mode 100644
index 0000000..6c4304e
--- /dev/null
+++ b/javatests/com/google/turbine/lower/testdata/sealed_nested.test
@@ -0,0 +1,7 @@
+=== T.java ===
+
+class T {
+ static sealed class Sealed permits Sealed.Foo {
+ static final class Foo extends Sealed {}
+ }
+}