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.light; 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.JetProperty; 030 import org.jetbrains.jet.lang.resolve.java.jetAsJava.KotlinLightElement; 031 032 // Copy of com.intellij.psi.impl.light.LightField 033 @SuppressWarnings("UnnecessaryFinalOnLocalVariableOrParameter") 034 public class KotlinLightField extends LightElement implements PsiField, KotlinLightElement<JetProperty, PsiField> { 035 private final JetProperty myOriginalProperty; 036 private final PsiField myField; 037 private final PsiClass myContainingClass; 038 039 public KotlinLightField( 040 @NotNull final PsiManager manager, 041 @NotNull final JetProperty originalProperty, 042 @NotNull final PsiField field, 043 @NotNull final PsiClass containingClass 044 ) { 045 super(manager, JavaLanguage.INSTANCE); 046 myOriginalProperty = originalProperty; 047 myField = field; 048 myContainingClass = containingClass; 049 } 050 051 @Override 052 public void setInitializer(@Nullable final PsiExpression initializer) throws IncorrectOperationException { 053 throw new IncorrectOperationException("Not supported"); 054 } 055 056 @NotNull 057 @Override 058 public SearchScope getUseScope() { 059 return myField.getUseScope(); 060 } 061 062 @Override 063 public String getName() { 064 return myField.getName(); 065 } 066 067 @NotNull 068 @Override 069 public PsiIdentifier getNameIdentifier() { 070 return myField.getNameIdentifier(); 071 } 072 073 @Override 074 public PsiDocComment getDocComment() { 075 return myField.getDocComment(); 076 } 077 078 @Override 079 public boolean isDeprecated() { 080 return myField.isDeprecated(); 081 } 082 083 @Override 084 public PsiClass getContainingClass() { 085 return myContainingClass; 086 } 087 088 @NotNull 089 @Override 090 public PsiType getType() { 091 return myField.getType(); 092 } 093 094 @Override 095 public PsiTypeElement getTypeElement() { 096 return myField.getTypeElement(); 097 } 098 099 @Override 100 public PsiExpression getInitializer() { 101 return myField.getInitializer(); 102 } 103 104 @Override 105 public boolean hasInitializer() { 106 return myField.hasInitializer(); 107 } 108 109 @Override 110 public void normalizeDeclaration() throws IncorrectOperationException { 111 throw new IncorrectOperationException("Not supported"); 112 } 113 114 @Override 115 public Object computeConstantValue() { 116 return myField.computeConstantValue(); 117 } 118 119 @Override 120 public PsiElement setName(@NonNls @NotNull final String name) throws IncorrectOperationException { 121 throw new IncorrectOperationException("Not supported"); 122 } 123 124 @Override 125 public PsiModifierList getModifierList() { 126 return myField.getModifierList(); 127 } 128 129 @Override 130 public boolean hasModifierProperty(@NonNls @NotNull final String name) { 131 return myField.hasModifierProperty(name); 132 } 133 134 @Override 135 public String getText() { 136 return myField.getText(); 137 } 138 139 @NotNull 140 @Override 141 public PsiElement copy() { 142 return new KotlinLightField(myManager, myOriginalProperty, (PsiField)myField.copy(), myContainingClass); 143 } 144 145 @Override 146 public TextRange getTextRange() { 147 return new TextRange(-1, -1); 148 } 149 150 @Override 151 public boolean isValid() { 152 return myContainingClass.isValid(); 153 } 154 155 @Override 156 public String toString() { 157 return "PsiField:" + getName(); 158 } 159 160 @NotNull 161 @Override 162 public JetProperty getOrigin() { 163 return myOriginalProperty; 164 } 165 166 @NotNull 167 @Override 168 public PsiField getDelegate() { 169 return myField; 170 } 171 172 @NotNull 173 @Override 174 public PsiElement getNavigationElement() { 175 return getOrigin(); 176 } 177 }