diff --git a/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliArrayTypeElement.java b/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliArrayTypeElement.java index b1757956..1b54a9c0 100644 --- a/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliArrayTypeElement.java +++ b/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliArrayTypeElement.java @@ -32,15 +32,16 @@ package org.jf.smalidea.psi.impl; import com.intellij.lang.ASTNode; -import com.intellij.psi.*; -import org.jetbrains.annotations.NonNls; +import com.intellij.psi.PsiArrayType; +import com.intellij.psi.PsiType; +import com.intellij.psi.PsiTypeElement; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jf.smalidea.SmaliTokens; import org.jf.smalidea.psi.SmaliCompositeElementFactory; import org.jf.smalidea.psi.SmaliElementTypes; -public class SmaliArrayTypeElement extends SmaliCompositeElement implements PsiTypeElement { +public class SmaliArrayTypeElement extends SmaliTypeElement { public static final SmaliCompositeElementFactory FACTORY = new SmaliCompositeElementFactory() { @Override public SmaliCompositeElement createElement() { return new SmaliArrayTypeElement(); @@ -69,22 +70,4 @@ public class SmaliArrayTypeElement extends SmaliCompositeElement implements PsiT @Nullable @Override public SmaliClassTypeElement getInnermostComponentReferenceElement() { return findChildByClass(SmaliClassTypeElement.class); } - - // Annotations on types are for JSR 308. Not applicable to smali. - - @NotNull @Override public PsiAnnotation[] getAnnotations() { - return new PsiAnnotation[0]; - } - - @NotNull @Override public PsiAnnotation[] getApplicableAnnotations() { - return new PsiAnnotation[0]; - } - - @Nullable @Override public PsiAnnotation findAnnotation(@NotNull @NonNls String qualifiedName) { - return null; - } - - @NotNull @Override public PsiAnnotation addAnnotation(@NotNull @NonNls String qualifiedName) { - return null; - } } diff --git a/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliClassTypeElement.java b/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliClassTypeElement.java index 89ffda44..999f47d4 100644 --- a/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliClassTypeElement.java +++ b/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliClassTypeElement.java @@ -35,15 +35,13 @@ import com.intellij.openapi.util.TextRange; import com.intellij.psi.*; import com.intellij.psi.scope.PsiScopeProcessor; import com.intellij.util.IncorrectOperationException; -import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jf.smalidea.psi.SmaliCompositeElementFactory; import org.jf.smalidea.psi.SmaliElementTypes; import org.jf.smalidea.util.NameUtils; -public class SmaliClassTypeElement extends SmaliCompositeElement - implements PsiTypeElement, PsiJavaCodeReferenceElement { +public class SmaliClassTypeElement extends SmaliTypeElement implements PsiJavaCodeReferenceElement { public static final SmaliCompositeElementFactory FACTORY = new SmaliCompositeElementFactory() { @Override public SmaliCompositeElement createElement() { return new SmaliClassTypeElement(); @@ -126,24 +124,6 @@ public class SmaliClassTypeElement extends SmaliCompositeElement return false; } - // Annotations on types are for JSR 308. Not applicable to smali. - - @NotNull @Override public PsiAnnotation[] getAnnotations() { - return new PsiAnnotation[0]; - } - - @NotNull @Override public PsiAnnotation[] getApplicableAnnotations() { - return new PsiAnnotation[0]; - } - - @Nullable @Override public PsiAnnotation findAnnotation(@NotNull @NonNls String qualifiedName) { - return null; - } - - @NotNull @Override public PsiAnnotation addAnnotation(@NotNull @NonNls String qualifiedName) { - throw new UnsupportedOperationException(); - } - // *************************************************************************** // Below are the PsiJavaCodeReferenceElement-specific methods diff --git a/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliPrimitiveTypeElement.java b/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliPrimitiveTypeElement.java index 4cdcb13f..4bdf65a6 100644 --- a/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliPrimitiveTypeElement.java +++ b/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliPrimitiveTypeElement.java @@ -31,17 +31,12 @@ package org.jf.smalidea.psi.impl; -import com.intellij.psi.PsiAnnotation; -import com.intellij.psi.PsiJavaCodeReferenceElement; import com.intellij.psi.PsiType; -import com.intellij.psi.PsiTypeElement; -import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import org.jf.smalidea.psi.SmaliCompositeElementFactory; import org.jf.smalidea.psi.SmaliElementTypes; -public class SmaliPrimitiveTypeElement extends SmaliCompositeElement implements PsiTypeElement { +public class SmaliPrimitiveTypeElement extends SmaliTypeElement { public static final SmaliCompositeElementFactory FACTORY = new SmaliCompositeElementFactory() { @Override public SmaliCompositeElement createElement() { return new SmaliPrimitiveTypeElement(); @@ -74,26 +69,4 @@ public class SmaliPrimitiveTypeElement extends SmaliCompositeElement implements throw new RuntimeException("Unexpected primitive type"); } } - - @Nullable @Override public PsiJavaCodeReferenceElement getInnermostComponentReferenceElement() { - return null; - } - - // Annotations on types are for JSR 308. Not applicable to smali. - - @NotNull @Override public PsiAnnotation[] getAnnotations() { - return new PsiAnnotation[0]; - } - - @NotNull @Override public PsiAnnotation[] getApplicableAnnotations() { - return new PsiAnnotation[0]; - } - - @Nullable @Override public PsiAnnotation findAnnotation(@NotNull @NonNls String qualifiedName) { - return null; - } - - @NotNull @Override public PsiAnnotation addAnnotation(@NotNull @NonNls String qualifiedName) { - return null; - } } diff --git a/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliTypeElement.java b/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliTypeElement.java new file mode 100644 index 00000000..c587d3f1 --- /dev/null +++ b/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliTypeElement.java @@ -0,0 +1,68 @@ +/* + * Copyright 2014, Google Inc. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following disclaimer + * in the documentation and/or other materials provided with the + * distribution. + * * Neither the name of Google Inc. nor the names of its + * contributors may be used to endorse or promote products derived from + * this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +package org.jf.smalidea.psi.impl; + +import com.intellij.psi.PsiAnnotation; +import com.intellij.psi.PsiJavaCodeReferenceElement; +import com.intellij.psi.PsiTypeElement; +import com.intellij.psi.tree.IElementType; +import org.jetbrains.annotations.NonNls; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + +public abstract class SmaliTypeElement extends SmaliCompositeElement implements PsiTypeElement { + protected SmaliTypeElement(IElementType type) { + super(type); + } + + @Nullable @Override public PsiJavaCodeReferenceElement getInnermostComponentReferenceElement() { + return null; + } + + // Annotations on types are for JSR 308. Not applicable to smali. + + @NotNull @Override public PsiAnnotation[] getAnnotations() { + return new PsiAnnotation[0]; + } + + @NotNull @Override public PsiAnnotation[] getApplicableAnnotations() { + return new PsiAnnotation[0]; + } + + @Nullable @Override public PsiAnnotation findAnnotation(@NotNull @NonNls String qualifiedName) { + return null; + } + + @NotNull @Override public PsiAnnotation addAnnotation(@NotNull @NonNls String qualifiedName) { + throw new UnsupportedOperationException(); + } +} diff --git a/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliVoidTypeElement.java b/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliVoidTypeElement.java index 92a91d12..2b540c6b 100644 --- a/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliVoidTypeElement.java +++ b/smalidea/src/main/java/org/jf/smalidea/psi/impl/SmaliVoidTypeElement.java @@ -31,10 +31,12 @@ package org.jf.smalidea.psi.impl; +import com.intellij.psi.PsiType; +import org.jetbrains.annotations.NotNull; import org.jf.smalidea.psi.SmaliCompositeElementFactory; import org.jf.smalidea.psi.SmaliElementTypes; -public class SmaliVoidTypeElement extends SmaliCompositeElement { +public class SmaliVoidTypeElement extends SmaliTypeElement { public static final SmaliCompositeElementFactory FACTORY = new SmaliCompositeElementFactory() { @Override public SmaliCompositeElement createElement() { return new SmaliVoidTypeElement(); @@ -44,4 +46,8 @@ public class SmaliVoidTypeElement extends SmaliCompositeElement { public SmaliVoidTypeElement() { super(SmaliElementTypes.VOID_TYPE); } + + @NotNull @Override public PsiType getType() { + return PsiType.VOID; + } }