Return firstChildNode for codeFragments in doParseContents as expected
This commit is contained in:
@@ -30,17 +30,5 @@ public class JetExpressionCodeFragment(
|
||||
context: PsiElement?
|
||||
) : JetCodeFragment(project, name, text, JetNodeTypes.EXPRESSION_CODE_FRAGMENT, context) {
|
||||
|
||||
fun getExpression(): JetExpression? {
|
||||
var resultingExpression: JetExpression? = null
|
||||
this.accept(object: JetTreeVisitor<Void>() {
|
||||
override fun visitExpression(expression: JetExpression, data: Void?): Void? {
|
||||
resultingExpression = expression
|
||||
return null
|
||||
}
|
||||
|
||||
override fun visitElement(element: PsiElement) = element.acceptChildren(this)
|
||||
|
||||
}, null)
|
||||
return resultingExpression
|
||||
}
|
||||
fun getExpression() = findChildByClass(javaClass<JetExpression>())
|
||||
}
|
||||
|
||||
@@ -44,7 +44,7 @@ public class JetExpressionCodeFragmentType extends JetFileElementType {
|
||||
Project project = psi.getProject();
|
||||
Language languageForParser = getLanguageForParser(psi);
|
||||
PsiBuilder builder = PsiBuilderFactory.getInstance().createBuilder(project, chameleon, null, languageForParser, chameleon.getChars());
|
||||
return JetParser.parseExpressionCodeFragment(builder);
|
||||
return JetParser.parseExpressionCodeFragment(builder).getFirstChildNode();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -18,12 +18,10 @@ package org.jetbrains.jet.lang.psi;
|
||||
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
import org.jetbrains.jet.JetNodeTypes;
|
||||
import org.jetbrains.jet.lang.types.JetType;
|
||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||
import org.jetbrains.jet.lexer.JetTokens;
|
||||
|
||||
public class JetTypeCodeFragment extends JetCodeFragment {
|
||||
public JetTypeCodeFragment(Project project, String name, CharSequence text, PsiElement context) {
|
||||
@@ -32,26 +30,11 @@ public class JetTypeCodeFragment extends JetCodeFragment {
|
||||
|
||||
@Nullable
|
||||
public JetType getType() {
|
||||
JetType type = null;
|
||||
|
||||
for (PsiElement child : getChildren()) {
|
||||
IElementType elementType = child.getNode().getElementType();
|
||||
|
||||
if (elementType == JetNodeTypes.TYPE_CODE_FRAGMENT) {
|
||||
for (PsiElement grChild : child.getChildren()) {
|
||||
if (grChild instanceof JetTypeReference) {
|
||||
if (!grChild.getText().isEmpty())
|
||||
//TODO return the actual type
|
||||
type = KotlinBuiltIns.getInstance().getAnyType();
|
||||
}
|
||||
else if (!JetTokens.WHITE_SPACE_OR_COMMENT_BIT_SET.contains(elementType))
|
||||
return null;
|
||||
}
|
||||
}
|
||||
else if (!JetTokens.WHITE_SPACE_OR_COMMENT_BIT_SET.contains(elementType))
|
||||
return null;
|
||||
JetTypeReference typeReference = findChildByClass(JetTypeReference.class);
|
||||
if (typeReference != null) {
|
||||
//TODO return the actual type
|
||||
return KotlinBuiltIns.getInstance().getAnyType();
|
||||
}
|
||||
|
||||
return type;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -44,6 +44,6 @@ public class JetTypeCodeFragmentType extends JetFileElementType {
|
||||
Project project = psi.getProject();
|
||||
Language languageForParser = getLanguageForParser(psi);
|
||||
PsiBuilder builder = PsiBuilderFactory.getInstance().createBuilder(project, chameleon, null, languageForParser, chameleon.getChars());
|
||||
return JetParser.parseTypeCodeFragment(builder);
|
||||
return JetParser.parseTypeCodeFragment(builder).getFirstChildNode();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user