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;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
||||
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user