From c92267bcd62f4f943903263ad6bd3f1af1b61396 Mon Sep 17 00:00:00 2001 From: Renaud Pawlak Date: Mon, 4 Jan 2021 18:12:20 +0100 Subject: [PATCH] fixes for custom adapters --- .../jsweet/transpiler/extension/PrinterAdapter.java | 8 ++++++++ .../org/jsweet/transpiler/model/VariableElement.java | 2 ++ .../model/support/ExtendedElementSupport.java | 10 ++++++++++ .../model/support/VariableElementSupport.java | 7 +++++++ 4 files changed, 27 insertions(+) diff --git a/transpiler/src/main/java/org/jsweet/transpiler/extension/PrinterAdapter.java b/transpiler/src/main/java/org/jsweet/transpiler/extension/PrinterAdapter.java index 0cf867dd..0c22d089 100644 --- a/transpiler/src/main/java/org/jsweet/transpiler/extension/PrinterAdapter.java +++ b/transpiler/src/main/java/org/jsweet/transpiler/extension/PrinterAdapter.java @@ -53,6 +53,7 @@ import org.jsweet.transpiler.model.CaseElement; import org.jsweet.transpiler.model.TypeCastElement; import org.jsweet.transpiler.model.CompilationUnitElement; import org.jsweet.transpiler.model.ExtendedElement; +import org.jsweet.transpiler.model.ExtendedElementFactory; import org.jsweet.transpiler.model.ForeachLoopElement; import org.jsweet.transpiler.model.IdentifierElement; import org.jsweet.transpiler.model.ImportElement; @@ -580,6 +581,13 @@ public class PrinterAdapter { return printer.getParentElement(); } + /** + * Gets currently scanned element. + */ + public final ExtendedElement getCurrentElement() { + return ExtendedElementFactory.INSTANCE.create(printer.getCurrent()); + } + /** * Gets the parent element in the printer's scanning stack. */ diff --git a/transpiler/src/main/java/org/jsweet/transpiler/model/VariableElement.java b/transpiler/src/main/java/org/jsweet/transpiler/model/VariableElement.java index 35d2dcfe..37ae7537 100644 --- a/transpiler/src/main/java/org/jsweet/transpiler/model/VariableElement.java +++ b/transpiler/src/main/java/org/jsweet/transpiler/model/VariableElement.java @@ -4,4 +4,6 @@ public interface VariableElement extends ExtendedElement, javax.lang.model.eleme javax.lang.model.element.VariableElement getStandardElement(); + ExtendedElement getVariableTypeTree(); + } diff --git a/transpiler/src/main/java/org/jsweet/transpiler/model/support/ExtendedElementSupport.java b/transpiler/src/main/java/org/jsweet/transpiler/model/support/ExtendedElementSupport.java index e21f5304..4eeb74f3 100644 --- a/transpiler/src/main/java/org/jsweet/transpiler/model/support/ExtendedElementSupport.java +++ b/transpiler/src/main/java/org/jsweet/transpiler/model/support/ExtendedElementSupport.java @@ -70,6 +70,16 @@ public class ExtendedElementSupport implements ExtendedElement } } + @SuppressWarnings("rawtypes") + @Override + public boolean equals(Object obj) { + if (!(obj instanceof ExtendedElementSupport)) { + return false; + } else { + return this.tree == ((ExtendedElementSupport)obj).tree; + } + } + @Override public int hashCode() { return tree.hashCode(); diff --git a/transpiler/src/main/java/org/jsweet/transpiler/model/support/VariableElementSupport.java b/transpiler/src/main/java/org/jsweet/transpiler/model/support/VariableElementSupport.java index 83366fd5..cccf1aae 100644 --- a/transpiler/src/main/java/org/jsweet/transpiler/model/support/VariableElementSupport.java +++ b/transpiler/src/main/java/org/jsweet/transpiler/model/support/VariableElementSupport.java @@ -12,6 +12,8 @@ import javax.lang.model.element.Modifier; import javax.lang.model.element.Name; import javax.lang.model.type.TypeMirror; +import org.jsweet.transpiler.model.ExtendedElement; +import org.jsweet.transpiler.model.ExtendedElementFactory; import org.jsweet.transpiler.model.VariableElement; import com.sun.tools.javac.tree.JCTree.JCVariableDecl; @@ -82,4 +84,9 @@ public class VariableElementSupport extends ExtendedElementSupport