001 /* 002 * Copyright 2010-2013 JetBrains s.r.o. 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017 package org.jetbrains.jet.asJava; 018 019 import com.intellij.lang.java.JavaLanguage; 020 import com.intellij.openapi.util.TextRange; 021 import com.intellij.psi.*; 022 import com.intellij.psi.impl.light.LightElement; 023 import com.intellij.psi.javadoc.PsiDocComment; 024 import com.intellij.psi.search.SearchScope; 025 import com.intellij.util.IncorrectOperationException; 026 import org.jetbrains.annotations.NonNls; 027 import org.jetbrains.annotations.NotNull; 028 import org.jetbrains.annotations.Nullable; 029 import org.jetbrains.jet.lang.psi.JetDeclaration; 030 031 // Copied from com.intellij.psi.impl.light.LightField 032 public abstract class KotlinLightField<T extends JetDeclaration, D extends PsiField> extends LightElement 033 implements PsiField, KotlinLightElement<T, D> { 034 private final T origin; 035 private final D delegate; 036 private final PsiClass containingClass; 037 038 public KotlinLightField(@NotNull PsiManager manager, @NotNull T origin, @NotNull D delegate, @NotNull PsiClass containingClass) { 039 super(manager, JavaLanguage.INSTANCE); 040 this.origin = origin; 041 this.delegate = delegate; 042 this.containingClass = containingClass; 043 } 044 045 @NotNull 046 @Override 047 public abstract KotlinLightField<T, D> copy(); 048 049 @Override 050 public void setInitializer(@Nullable PsiExpression initializer) throws IncorrectOperationException { 051 throw new IncorrectOperationException("Not supported"); 052 } 053 054 @NotNull 055 @Override 056 public SearchScope getUseScope() { 057 return delegate.getUseScope(); 058 } 059 060 @Override 061 public String getName() { 062 return delegate.getName(); 063 } 064 065 @NotNull 066 @Override 067 public PsiIdentifier getNameIdentifier() { 068 return delegate.getNameIdentifier(); 069 } 070 071 @Override 072 public PsiDocComment getDocComment() { 073 return delegate.getDocComment(); 074 } 075 076 @Override 077 public boolean isDeprecated() { 078 return delegate.isDeprecated(); 079 } 080 081 @Override 082 public PsiClass getContainingClass() { 083 return containingClass; 084 } 085 086 @NotNull 087 @Override 088 public PsiType getType() { 089 return delegate.getType(); 090 } 091 092 @Override 093 public PsiTypeElement getTypeElement() { 094 return delegate.getTypeElement(); 095 } 096 097 @Override 098 public PsiExpression getInitializer() { 099 return delegate.getInitializer(); 100 } 101 102 @Override 103 public boolean hasInitializer() { 104 return delegate.hasInitializer(); 105 } 106 107 @Override 108 public void normalizeDeclaration() throws IncorrectOperationException { 109 throw new IncorrectOperationException("Not supported"); 110 } 111 112 @Override 113 public Object computeConstantValue() { 114 return delegate.computeConstantValue(); 115 } 116 117 @Override 118 public PsiElement setName(@NonNls @NotNull String name) throws IncorrectOperationException { 119 throw new IncorrectOperationException("Not supported"); 120 } 121 122 @Override 123 public PsiModifierList getModifierList() { 124 return delegate.getModifierList(); 125 } 126 127 @Override 128 public boolean hasModifierProperty(@NonNls @NotNull String name) { 129 return delegate.hasModifierProperty(name); 130 } 131 132 @Override 133 public String getText() { 134 return delegate.getText(); 135 } 136 137 @Override 138 public TextRange getTextRange() { 139 return new TextRange(-1, -1); 140 } 141 142 @Override 143 public boolean isValid() { 144 return containingClass.isValid(); 145 } 146 147 @Override 148 public String toString() { 149 return "PsiField:" + getName(); 150 } 151 152 @NotNull 153 @Override 154 public T getOrigin() { 155 return origin; 156 } 157 158 @NotNull 159 @Override 160 public D getDelegate() { 161 return delegate; 162 } 163 164 @NotNull 165 @Override 166 public PsiElement getNavigationElement() { 167 return getOrigin(); 168 } 169 }