mirror of
https://github.com/revanced/smali.git
synced 2025-05-05 00:54:25 +02:00
Extract out some of the common TypeElement implementation
This commit is contained in:
parent
5844bd6dd0
commit
3048a6c897
@ -32,15 +32,16 @@
|
|||||||
package org.jf.smalidea.psi.impl;
|
package org.jf.smalidea.psi.impl;
|
||||||
|
|
||||||
import com.intellij.lang.ASTNode;
|
import com.intellij.lang.ASTNode;
|
||||||
import com.intellij.psi.*;
|
import com.intellij.psi.PsiArrayType;
|
||||||
import org.jetbrains.annotations.NonNls;
|
import com.intellij.psi.PsiType;
|
||||||
|
import com.intellij.psi.PsiTypeElement;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jf.smalidea.SmaliTokens;
|
import org.jf.smalidea.SmaliTokens;
|
||||||
import org.jf.smalidea.psi.SmaliCompositeElementFactory;
|
import org.jf.smalidea.psi.SmaliCompositeElementFactory;
|
||||||
import org.jf.smalidea.psi.SmaliElementTypes;
|
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() {
|
public static final SmaliCompositeElementFactory FACTORY = new SmaliCompositeElementFactory() {
|
||||||
@Override public SmaliCompositeElement createElement() {
|
@Override public SmaliCompositeElement createElement() {
|
||||||
return new SmaliArrayTypeElement();
|
return new SmaliArrayTypeElement();
|
||||||
@ -69,22 +70,4 @@ public class SmaliArrayTypeElement extends SmaliCompositeElement implements PsiT
|
|||||||
@Nullable @Override public SmaliClassTypeElement getInnermostComponentReferenceElement() {
|
@Nullable @Override public SmaliClassTypeElement getInnermostComponentReferenceElement() {
|
||||||
return findChildByClass(SmaliClassTypeElement.class);
|
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -35,15 +35,13 @@ import com.intellij.openapi.util.TextRange;
|
|||||||
import com.intellij.psi.*;
|
import com.intellij.psi.*;
|
||||||
import com.intellij.psi.scope.PsiScopeProcessor;
|
import com.intellij.psi.scope.PsiScopeProcessor;
|
||||||
import com.intellij.util.IncorrectOperationException;
|
import com.intellij.util.IncorrectOperationException;
|
||||||
import org.jetbrains.annotations.NonNls;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jf.smalidea.psi.SmaliCompositeElementFactory;
|
import org.jf.smalidea.psi.SmaliCompositeElementFactory;
|
||||||
import org.jf.smalidea.psi.SmaliElementTypes;
|
import org.jf.smalidea.psi.SmaliElementTypes;
|
||||||
import org.jf.smalidea.util.NameUtils;
|
import org.jf.smalidea.util.NameUtils;
|
||||||
|
|
||||||
public class SmaliClassTypeElement extends SmaliCompositeElement
|
public class SmaliClassTypeElement extends SmaliTypeElement implements PsiJavaCodeReferenceElement {
|
||||||
implements PsiTypeElement, PsiJavaCodeReferenceElement {
|
|
||||||
public static final SmaliCompositeElementFactory FACTORY = new SmaliCompositeElementFactory() {
|
public static final SmaliCompositeElementFactory FACTORY = new SmaliCompositeElementFactory() {
|
||||||
@Override public SmaliCompositeElement createElement() {
|
@Override public SmaliCompositeElement createElement() {
|
||||||
return new SmaliClassTypeElement();
|
return new SmaliClassTypeElement();
|
||||||
@ -126,24 +124,6 @@ public class SmaliClassTypeElement extends SmaliCompositeElement
|
|||||||
return false;
|
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
|
// Below are the PsiJavaCodeReferenceElement-specific methods
|
||||||
|
|
||||||
|
@ -31,17 +31,12 @@
|
|||||||
|
|
||||||
package org.jf.smalidea.psi.impl;
|
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.PsiType;
|
||||||
import com.intellij.psi.PsiTypeElement;
|
|
||||||
import org.jetbrains.annotations.NonNls;
|
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
import org.jf.smalidea.psi.SmaliCompositeElementFactory;
|
import org.jf.smalidea.psi.SmaliCompositeElementFactory;
|
||||||
import org.jf.smalidea.psi.SmaliElementTypes;
|
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() {
|
public static final SmaliCompositeElementFactory FACTORY = new SmaliCompositeElementFactory() {
|
||||||
@Override public SmaliCompositeElement createElement() {
|
@Override public SmaliCompositeElement createElement() {
|
||||||
return new SmaliPrimitiveTypeElement();
|
return new SmaliPrimitiveTypeElement();
|
||||||
@ -74,26 +69,4 @@ public class SmaliPrimitiveTypeElement extends SmaliCompositeElement implements
|
|||||||
throw new RuntimeException("Unexpected primitive type");
|
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
|
}
|
||||||
|
}
|
@ -31,10 +31,12 @@
|
|||||||
|
|
||||||
package org.jf.smalidea.psi.impl;
|
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.SmaliCompositeElementFactory;
|
||||||
import org.jf.smalidea.psi.SmaliElementTypes;
|
import org.jf.smalidea.psi.SmaliElementTypes;
|
||||||
|
|
||||||
public class SmaliVoidTypeElement extends SmaliCompositeElement {
|
public class SmaliVoidTypeElement extends SmaliTypeElement {
|
||||||
public static final SmaliCompositeElementFactory FACTORY = new SmaliCompositeElementFactory() {
|
public static final SmaliCompositeElementFactory FACTORY = new SmaliCompositeElementFactory() {
|
||||||
@Override public SmaliCompositeElement createElement() {
|
@Override public SmaliCompositeElement createElement() {
|
||||||
return new SmaliVoidTypeElement();
|
return new SmaliVoidTypeElement();
|
||||||
@ -44,4 +46,8 @@ public class SmaliVoidTypeElement extends SmaliCompositeElement {
|
|||||||
public SmaliVoidTypeElement() {
|
public SmaliVoidTypeElement() {
|
||||||
super(SmaliElementTypes.VOID_TYPE);
|
super(SmaliElementTypes.VOID_TYPE);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@NotNull @Override public PsiType getType() {
|
||||||
|
return PsiType.VOID;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user