< prev index next >

src/jdk.jextract/share/classes/com/sun/tools/jextract/tree/EnumTree.java

Print this page

        

@@ -22,18 +22,36 @@
  */
 package com.sun.tools.jextract.tree;
 
 import java.util.List;
 import java.util.Collections;
+import java.util.Objects;
+import java.util.Optional;
 import jdk.internal.clang.Cursor;
 
 public class EnumTree extends Tree {
+    private final Optional<Tree> definition;
     private final List<FieldTree> constants;
 
-    public EnumTree(Cursor c, List<FieldTree> constants) {
-        super(c);
-        this.constants = Collections.unmodifiableList(constants);
+    EnumTree(Cursor c, Optional<Tree> definition, List<FieldTree> consts) {
+        this(c, definition, consts, c.spelling());
+    }
+
+    private EnumTree(Cursor c, Optional<Tree> definition, List<FieldTree> consts, String name) {
+        super(c, name);
+        this.definition = c.isDefinition()? Optional.of(this) : Objects.requireNonNull(definition);
+        this.constants = Collections.unmodifiableList(consts);
+    }
+
+    @Override
+    public EnumTree withName(String newName) {
+        return name().equals(newName)? this :
+            new EnumTree(cursor(), definition, constants, newName);
+    }
+
+    public Optional<Tree> definition() {
+        return definition;
     }
 
     public List<FieldTree> constants() {
         return constants;
     }
< prev index next >