package org.jetbrains.plugins.clojure.psi.impl.synthetic; import com.intellij.openapi.diagnostic.Logger; import com.intellij.psi.*; import com.intellij.psi.impl.PsiSuperMethodImplUtil; import com.intellij.psi.impl.light.LightElement; import com.intellij.psi.javadoc.PsiDocComment; import com.intellij.psi.util.MethodSignature; import com.intellij.psi.util.MethodSignatureBackedByPsiMethod; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.clojure.file.ClojureFileType; import org.jetbrains.plugins.clojure.psi.api.defs.ClDef; import org.jetbrains.plugins.clojure.psi.api.synthetic.ClSyntheticClass; import org.jetbrains.plugins.clojure.psi.api.synthetic.ClSyntheticMethod; import java.util.List; /** * @author ilyas */ public class ClSynteticMethodImpl extends LightElement implements ClSyntheticMethod { public static final Logger LOG = Logger.getInstance("org.jetbrains.plugins.clojure.psi.impl.synthetic.ClSynteticMethodImpl"); private final ClDef myDef; private final ClSyntheticClass myClass; private PsiMethod myCodeBehindMethod; protected ClSynteticMethodImpl(ClDef def, ClSyntheticClass clazz) { super(def.getManager(), ClojureFileType.CLOJURE_LANGUAGE); myDef = def; myClass = clazz; PsiElementFactory factory = JavaPsiFacade.getInstance(getProject()).getElementFactory(); try { myCodeBehindMethod = factory.createMethodFromText(SynteticUtil.getJavaMethodByDef(myDef), null); } catch (IncorrectOperationException e) { LOG.error(e); } } @Override public String toString() { return "ClojureSyntheticMethod[" + getName() + "]"; } public PsiType getReturnTypeNoResolve() { return null; } public String getText() { return null; } public void accept(@NotNull PsiElementVisitor visitor) { } public PsiElement copy() { return null; } public boolean isExtensionMethod() { return false; } public PsiType getReturnType() { return null; } public PsiTypeElement getReturnTypeElement() { return null; } @NotNull public PsiParameterList getParameterList() { return null; } @NotNull public PsiReferenceList getThrowsList() { return null; } public PsiCodeBlock getBody() { return null; } public boolean isConstructor() { return false; } public boolean isVarArgs() { return false; } @NotNull public MethodSignature getSignature(@NotNull PsiSubstitutor substitutor) { return null; } public PsiIdentifier getNameIdentifier() { return null; } @NotNull public PsiMethod[] findSuperMethods() { return new PsiMethod[0]; } @NotNull public PsiMethod[] findSuperMethods(boolean checkAccess) { return new PsiMethod[0]; } @NotNull public PsiMethod[] findSuperMethods(PsiClass parentClass) { return new PsiMethod[0]; } @NotNull public List<MethodSignatureBackedByPsiMethod> findSuperMethodSignaturesIncludingStatic(boolean checkAccess) { return null; } public PsiMethod findDeepestSuperMethod() { return null; } @NotNull public PsiMethod[] findDeepestSuperMethods() { return new PsiMethod[0]; } @NotNull public PsiModifierList getModifierList() { return null; } public boolean hasModifierProperty(@NotNull String name) { return false; } @NotNull public String getName() { return null; } public PsiElement setName(@NonNls String name) throws IncorrectOperationException { return null; } @NotNull public HierarchicalMethodSignature getHierarchicalMethodSignature() { return PsiSuperMethodImplUtil.getHierarchicalMethodSignature(this); } public PsiClass getContainingClass() { return myClass; } public PsiDocComment getDocComment() { return null; } public boolean isDeprecated() { return false; } public boolean hasTypeParameters() { return false; } public PsiTypeParameterList getTypeParameterList() { return null; } @NotNull public PsiTypeParameter[] getTypeParameters() { return new PsiTypeParameter[0]; } }