From 3f95cdb7bb59293dde692d56b6b754c794d77146 Mon Sep 17 00:00:00 2001 From: Natalia Ukhorskaya Date: Wed, 30 Apr 2014 15:36:11 +0400 Subject: [PATCH] Return firstChildNode for codeFragments in doParseContents as expected --- .../jet/lang/psi/JetExpressionCodeFragment.kt | 14 +--------- .../psi/JetExpressionCodeFragmentType.java | 2 +- .../jet/lang/psi/JetTypeCodeFragment.java | 27 ++++--------------- .../jet/lang/psi/JetTypeCodeFragmentType.java | 2 +- 4 files changed, 8 insertions(+), 37 deletions(-) diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetExpressionCodeFragment.kt b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetExpressionCodeFragment.kt index 33cfb4b3858..76798edc95c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetExpressionCodeFragment.kt +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetExpressionCodeFragment.kt @@ -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() { - 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()) } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetExpressionCodeFragmentType.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetExpressionCodeFragmentType.java index 1bbf39021b6..33146393fb0 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetExpressionCodeFragmentType.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetExpressionCodeFragmentType.java @@ -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(); } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetTypeCodeFragment.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetTypeCodeFragment.java index 3a6d2a4742b..65ae8256d15 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetTypeCodeFragment.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetTypeCodeFragment.java @@ -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; } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetTypeCodeFragmentType.java b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetTypeCodeFragmentType.java index 2397ac71fe0..c73b6476238 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetTypeCodeFragmentType.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/psi/JetTypeCodeFragmentType.java @@ -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(); } }