@Nullable private static PsiElement findKeywordsElementNotAtEnd(PsiElement listElement, PsiElement listChildWithKeywords, ElixirNoParenthesesKeywords keywords) { PsiElement keywordsElementNotAtEnd = null; if (listElement.getLastChild() != listChildWithKeywords) { keywordsElementNotAtEnd = keywords; } return keywordsElementNotAtEnd; } }
public static boolean processChildren(@NotNull PsiElement element, @NotNull PsiScopeProcessor processor, @NotNull ResolveState substitutor, @Nullable PsiElement lastParent, @NotNull PsiElement place) { PsiElement run = lastParent == null ? element.getLastChild() : lastParent.getPrevSibling(); while (run != null) { if (run instanceof GoCompositeElement && !run.processDeclarations(processor, substitutor, null, place)) return false; run = run.getPrevSibling(); } return true; }
public void testIsVariable() { myFixture.configureByFiles("is_variable.ex"); PsiElement callable = myFixture .getFile() .findElementAt(myFixture.getCaretOffset()) .getPrevSibling() .getLastChild() .getLastChild() .getLastChild() .getLastChild() .getLastChild() .getLastChild(); assertInstanceOf(callable, Call.class); assertFalse("assoc is incorrectly marked as a variable", isVariable(callable)); }
@Override public boolean execute(@NotNull PsiElement element, @NotNull ResolveState state) { ProgressManager.checkCanceled(); if (accept(element)) { List<BallerinaDefinition> definitions = ((BallerinaFile) element).getDefinitions(); for (BallerinaDefinition definition : definitions) { ProgressManager.checkCanceled(); PsiElement lastChild = definition.getLastChild(); if (lastChild instanceof BallerinaDefinition) { lastChild = lastChild.getLastChild(); } if (lastChild instanceof BallerinaTypeDefinition) { BallerinaTypeDefinition child = (BallerinaTypeDefinition) lastChild; PsiElement identifier = child.getIdentifier(); if (identifier != null) { if (myResult != null) { myResult.addElement(BallerinaCompletionUtils.createTypeLookupElement(child)); } else if (myElement.getText().equals(identifier.getText())) { add(identifier); } } } } } return true; }
public void testUseScope() { myFixture.configureByFiles("get_use_scope.ex"); PsiElement callable = myFixture .getFile() .findElementAt(myFixture.getCaretOffset()) .getPrevSibling() .getLastChild() .getLastChild() .getLastChild() .getLastChild() .getLastChild(); assertInstanceOf(callable, Call.class); SearchScope useScope = callable.getUseScope(); assertInstanceOf(useScope, LocalSearchScope.class); LocalSearchScope localSearchScope = (LocalSearchScope) useScope; PsiElement[] scope = localSearchScope.getScope(); assertEquals(1, scope.length); PsiElement singleScope = scope[0]; assertTrue( "Use Scope is not the surrounding if", singleScope.getText().startsWith("if auth == ") ); }
public void testIsParameter() { myFixture.configureByFiles("is_parameter.ex"); PsiElement variable = myFixture .getFile() .findElementAt(myFixture.getCaretOffset()) .getPrevSibling() .getLastChild() .getLastChild(); assertInstanceOf(variable, UnqualifiedNoArgumentsCall.class); assertFalse("alias is marked as a parameter", isParameter(variable)); assertFalse("alias is marked as a variable", isVariable(variable)); }
private boolean hasVersion(final PsiElement psiElement, final String lookupVersion) { return Optional.ofNullable(psiElement.getLastChild()) .map(PsiElement::getText) .filter(text -> text.matches(lookupVersion)) .isPresent(); }
PsiElement last = list.getLastChild(); if (isToken(last, "]")) { int rparenthOffset = last.getTextRange().getStartOffset();
PsiElement lastChild = definition.getLastChild(); if (lastChild instanceof BallerinaDefinition) { lastChild = lastChild.getLastChild(); PsiElement lastChild = definition.getLastChild(); if (lastChild instanceof BallerinaDefinition) { lastChild = lastChild.getLastChild();
/** * Takes an expression in text and returns a Psi tree of that program. */ @NotNull private static PsiElement createExpressionFromText(@NotNull final Project project, @NotNull final String name) { final DlangFile fileFromText = createFileFromText(project, name); final PsiElement rhs = fileFromText.getFirstChild().getFirstChild().getLastChild(); return rhs.getLastChild().getLastChild().getLastChild(); }
@Override public PsiElement getLastChild() { return getDelegate().getLastChild(); }
public static int getOpeningQuotePosition(PsiElement errorElement) { PsiElement lastFieldElement = errorElement; while (CsvHelper.getElementType(lastFieldElement) != CsvTypes.RECORD) { lastFieldElement = lastFieldElement.getPrevSibling(); } lastFieldElement = lastFieldElement.getLastChild(); if (CsvHelper.getElementType(lastFieldElement) != CsvTypes.FIELD) { throw new IllegalArgumentException("Field element expected"); } return getOpeningQuotePosition(lastFieldElement.getFirstChild(), lastFieldElement.getLastChild()); }
@Override public boolean isAvailable(@NotNull Project project, Editor editor, @Nullable final PsiElement psiElement) { if (!super.isAvailable(project, editor, psiElement)) { return false; } PsiElement element = psiElement == null ? null : CsvHelper.getParentFieldElement(psiElement); return element instanceof CsvField && element.getFirstChild() != null && (CsvHelper.getElementType(element.getFirstChild()) == CsvTypes.QUOTE || CsvHelper.getElementType(element.getLastChild()) == CsvTypes.QUOTE) && CsvIntentionHelper.getChildren(element).stream().allMatch(childElement -> CsvHelper.getElementType(childElement) != CsvTypes.ESCAPED_TEXT); }
@Override public boolean isAvailable(@NotNull Project project, Editor editor, @Nullable final PsiElement psiElement) { if (!super.isAvailable(project, editor, psiElement)) { return false; } PsiElement element = psiElement == null ? null : CsvHelper.getParentFieldElement(psiElement); return element instanceof CsvField && element.getFirstChild() != null && (CsvHelper.getElementType(element.getFirstChild()) != CsvTypes.QUOTE || CsvHelper.getElementType(element.getLastChild()) != CsvTypes.QUOTE); }
private static void mergeChildrenTo(PsiElement parent, PsiElement cur, LinkedList<PsiElement> list) { boolean skipParens = cur instanceof BnfParenthesized; PsiElement last = cur.getLastChild(); PsiElement first = cur.getFirstChild(); if (skipParens) { last = last.getPrevSibling(); first = first.getNextSibling(); } cur = unwrap(parent, first, last, cur); while (cur != null) { if (cur instanceof BnfExpression) list.add(cur); if (cur == last) break; cur = cur.getNextSibling(); } }
public static PsiElement getDummyAwarePrevSibling(PsiElement child) { PsiElement prevSibling = child.getPrevSibling(); while (prevSibling instanceof GeneratedParserUtilBase.DummyBlock) { prevSibling = prevSibling.getLastChild(); } if (prevSibling != null) return prevSibling; PsiElement parent = child.getParent(); while (parent instanceof GeneratedParserUtilBase.DummyBlock && parent.getPrevSibling() == null) { parent = parent.getParent(); } return parent == null? null : parent.getPrevSibling(); }
public static void foldElement(PsiElement element, List<FoldingDescriptor> myDescriptors, Document myDocument) { PsiElement firstChild = element.getFirstChild(); int leftMargin = firstChild == null || firstChild.getNextSibling() == null ? 0 : firstChild.getNode().getTextLength(); PsiElement lastChild = element.getLastChild(); int rightMargin = lastChild == null || lastChild == firstChild ? 0 : lastChild.getNode().getTextLength(); addDescriptorFor(myDescriptors, myDocument, element, leftMargin, rightMargin, 0); } }
@Override public String getDescription(PsiElement e) { PsiElement parent = e.getParent(); BnfQuantifier quantifier = parent instanceof BnfQuantified ? ((BnfQuantified)parent).getQuantifier() : null; BnfPredicateSign sign = parent instanceof BnfPredicate ? ((BnfPredicate)parent).getPredicateSign() : null; String prefix = sign == null? "" : sign.getText(); String suffix = quantifier == null? "" : quantifier.getText(); return "Unwrap " + prefix + e.getFirstChild().getText() + "..." + e.getLastChild().getText() + suffix; }
private static void addTokensFoldingDescriptor(List<FoldingDescriptor> descriptors, PsiElement root) { PsiElement tokensSpec = MyPsiUtils.findFirstChildOfType(root, TOKENSSPEC); if (tokensSpec != null) { PsiElement tokens = tokensSpec.getFirstChild(); if ( tokens.getNode().getElementType() == TOKENS ) { PsiElement rbrace = tokensSpec.getLastChild(); if ( rbrace.getNode().getElementType()==RBRACE ) { descriptors.add(new FoldingDescriptor(tokensSpec, new TextRange(tokens.getTextRange().getEndOffset(), rbrace.getTextRange().getEndOffset()))); } } } }
private static void addOptionsFoldingDescriptor(List<FoldingDescriptor> descriptors, PsiElement root) { PsiElement optionsSpec = MyPsiUtils.findFirstChildOfType(root, OPTIONSSPEC); if (optionsSpec != null) { PsiElement options = optionsSpec.getFirstChild(); if ( options.getNode().getElementType() == OPTIONS ) { PsiElement rbrace = optionsSpec.getLastChild(); if ( rbrace.getNode().getElementType()==RBRACE ) { descriptors.add(new FoldingDescriptor(optionsSpec, new TextRange(options.getTextRange().getEndOffset(), rbrace.getTextRange().getEndOffset()))); } } } }