Java 类com.intellij.psi.JavaTokenType 实例源码

项目:intellij-ce-playground    文件:GenerationInfoBase.java   
/**
 * @param aClass
 * @param leaf leaf element. Is guaranteed to be a tree descendant of aClass.
 * @return the value that will be passed to the {@link #insert(com.intellij.psi.PsiClass, com.intellij.psi.PsiElement, boolean)} method later.
 */
@Override
@Nullable
public PsiElement findInsertionAnchor(@NotNull PsiClass aClass, @NotNull PsiElement leaf) {
  PsiElement element = leaf;
  while (element.getParent() != aClass) {
    element = element.getParent();
  }

  PsiElement lBrace = aClass.getLBrace();
  if (lBrace == null) {
    return null;
  }
  PsiElement rBrace = aClass.getRBrace();
  if (!GenerateMembersUtil.isChildInRange(element, lBrace.getNextSibling(), rBrace)) {
    return null;
  }
  PsiElement prev = leaf.getPrevSibling();
  if (prev != null && prev.getNode() != null && prev.getNode().getElementType() == JavaTokenType.END_OF_LINE_COMMENT) {
    element = leaf.getNextSibling();
  }
  return element;
}
项目:intellij-ce-playground    文件:StatementParser.java   
@Nullable
public PsiBuilder.Marker parseCodeBlockDeep(final PsiBuilder builder, final boolean parseUntilEof) {
  if (builder.getTokenType() != JavaTokenType.LBRACE) return null;

  final PsiBuilder.Marker codeBlock = builder.mark();
  builder.advanceLexer();

  parseStatements(builder, parseUntilEof ? BraceMode.TILL_LAST : BraceMode.TILL_FIRST);

  final boolean greedyBlock = !expectOrError(builder, JavaTokenType.RBRACE, "expected.rbrace");
  builder.getTokenType(); // eat spaces

  done(codeBlock, JavaElementType.CODE_BLOCK);
  if (greedyBlock) {
    codeBlock.setCustomEdgeTokenBinders(null, WhitespacesBinders.GREEDY_RIGHT_BINDER);
  }
  return codeBlock;
}
项目:intellij-ce-playground    文件:DoWhileLoopPredicate.java   
public boolean satisfiedBy(PsiElement element) {
  if (!(element instanceof PsiJavaToken)) {
    return false;
  }
  final PsiJavaToken token = (PsiJavaToken)element;
  final IElementType tokenType = token.getTokenType();
  if (!JavaTokenType.DO_KEYWORD.equals(tokenType)) {
    return false;
  }
  final PsiElement parent = element.getParent();
  if (!(parent instanceof PsiDoWhileStatement)) {
    return false;
  }
  final PsiDoWhileStatement doWhileStatement =
    (PsiDoWhileStatement)parent;
  return !(doWhileStatement.getCondition() == null ||
           doWhileStatement.getBody() == null);
}
项目:intellij-ce-playground    文件:StatementParser.java   
@NotNull
private PsiBuilder.Marker parseForStatement(final PsiBuilder builder) {
  final PsiBuilder.Marker statement = builder.mark();
  builder.advanceLexer();

  if (!expect(builder, JavaTokenType.LPARENTH)) {
    error(builder, JavaErrorMessages.message("expected.lparen"));
    done(statement, JavaElementType.FOR_STATEMENT);
    return statement;
  }

  final PsiBuilder.Marker afterParenth = builder.mark();
  final PsiBuilder.Marker param = myParser.getDeclarationParser().parseParameter(builder, false, false);
  if (param == null || exprType(param) != JavaElementType.PARAMETER || builder.getTokenType() != JavaTokenType.COLON) {
    afterParenth.rollbackTo();
    return parseForLoopFromInitialization(builder, statement);
  }
  else {
    afterParenth.drop();
    return parseForEachFromColon(builder, statement);
  }
}
项目:intellij-ce-playground    文件:StatementParser.java   
private void parseExpressionOrExpressionList(final PsiBuilder builder) {
  final PsiBuilder.Marker expr = myParser.getExpressionParser().parse(builder);
  if (expr == null) return;

  final PsiBuilder.Marker expressionStatement;
  if (builder.getTokenType() != JavaTokenType.COMMA) {
    expressionStatement = expr.precede();
    done(expressionStatement, JavaElementType.EXPRESSION_STATEMENT);
  }
  else {
    final PsiBuilder.Marker expressionList = expr.precede();
    expressionStatement = expressionList.precede();

    do {
      builder.advanceLexer();
      final PsiBuilder.Marker nextExpression = myParser.getExpressionParser().parse(builder);
      if (nextExpression == null) {
        error(builder, JavaErrorMessages.message("expected.expression"));
      }
    }
    while (builder.getTokenType() == JavaTokenType.COMMA);

    done(expressionList, JavaElementType.EXPRESSION_LIST);
    done(expressionStatement, JavaElementType.EXPRESSION_LIST_STATEMENT);
  }
}
项目:intellij-ce-playground    文件:StatementParser.java   
@NotNull
private PsiBuilder.Marker parseForEachFromColon(PsiBuilder builder, PsiBuilder.Marker statement) {
  builder.advanceLexer();

  final PsiBuilder.Marker expr = myParser.getExpressionParser().parse(builder);
  if (expr == null) {
    error(builder, JavaErrorMessages.message("expected.expression"));
  }

  if (expect(builder, JavaTokenType.RPARENTH)) {
    final PsiBuilder.Marker bodyStatement = parseStatement(builder);
    if (bodyStatement == null) {
      error(builder, JavaErrorMessages.message("expected.statement"));
    }
  }
  else {
    error(builder, JavaErrorMessages.message("expected.rparen"));
  }

  done(statement, JavaElementType.FOREACH_STATEMENT);
  return statement;
}
项目:intellij-ce-playground    文件:StatementParser.java   
@NotNull
private PsiBuilder.Marker parseDoWhileStatement(final PsiBuilder builder) {
  final PsiBuilder.Marker statement = builder.mark();
  builder.advanceLexer();

  final PsiBuilder.Marker body = parseStatement(builder);
  if (body == null) {
    error(builder, JavaErrorMessages.message("expected.statement"));
    done(statement, JavaElementType.DO_WHILE_STATEMENT);
    return statement;
  }

  if (!expect(builder, JavaTokenType.WHILE_KEYWORD)) {
    error(builder, JavaErrorMessages.message("expected.while"));
    done(statement, JavaElementType.DO_WHILE_STATEMENT);
    return statement;
  }

  if (parseExpressionInParenth(builder)) {
    semicolon(builder);
  }

  done(statement, JavaElementType.DO_WHILE_STATEMENT);
  return statement;
}
项目:intellij-ce-playground    文件:StatementParser.java   
@Nullable
private PsiBuilder.Marker parseSwitchLabelStatement(final PsiBuilder builder) {
  final PsiBuilder.Marker statement = builder.mark();
  final boolean isCase = builder.getTokenType() == JavaTokenType.CASE_KEYWORD;
  builder.advanceLexer();

  if (isCase) {
    final PsiBuilder.Marker expr = myParser.getExpressionParser().parse(builder);
    if (expr == null) {
      statement.rollbackTo();
      return null;
    }
  }

  expectOrError(builder, JavaTokenType.COLON, "expected.colon");

  done(statement, JavaElementType.SWITCH_LABEL_STATEMENT);
  return statement;
}
项目:intellij-ce-playground    文件:StatementParser.java   
@NotNull
private PsiBuilder.Marker parseAssertStatement(final PsiBuilder builder) {
  final PsiBuilder.Marker statement = builder.mark();
  builder.advanceLexer();

  final PsiBuilder.Marker expr = myParser.getExpressionParser().parse(builder);
  if (expr == null) {
    error(builder, JavaErrorMessages.message("expected.boolean.expression"));
    done(statement, JavaElementType.ASSERT_STATEMENT);
    return statement;
  }

  if (expect(builder, JavaTokenType.COLON)) {
    final PsiBuilder.Marker expr2 = myParser.getExpressionParser().parse(builder);
    if (expr2 == null) {
      error(builder, JavaErrorMessages.message("expected.expression"));
      done(statement, JavaElementType.ASSERT_STATEMENT);
      return statement;
    }
  }

  semicolon(builder);
  done(statement, JavaElementType.ASSERT_STATEMENT);
  return statement;
}
项目:intellij-ce-playground    文件:StatementParser.java   
private boolean parseExpressionInParenth(final PsiBuilder builder) {
  if (!expect(builder, JavaTokenType.LPARENTH)) {
    error(builder, JavaErrorMessages.message("expected.lparen"));
    return false;
  }

  final PsiBuilder.Marker beforeExpr = builder.mark();
  final PsiBuilder.Marker expr = myParser.getExpressionParser().parse(builder);
  if (expr == null || builder.getTokenType() == JavaTokenType.SEMICOLON) {
    beforeExpr.rollbackTo();
    error(builder, JavaErrorMessages.message("expected.expression"));
    if (builder.getTokenType() != JavaTokenType.RPARENTH) {
      return false;
    }
  }
  else {
    beforeExpr.drop();
    if (builder.getTokenType() != JavaTokenType.RPARENTH) {
      error(builder, JavaErrorMessages.message("expected.rparen"));
      return false;
    }
  }

  builder.advanceLexer();
  return true;
}
项目:intellij-ce-playground    文件:FileParser.java   
@Nullable
public PsiBuilder.Marker parsePackageStatement(final PsiBuilder builder) {
  final PsiBuilder.Marker statement = builder.mark();

  if (!expect(builder, JavaTokenType.PACKAGE_KEYWORD)) {
    final PsiBuilder.Marker modList = builder.mark();
    myParser.getDeclarationParser().parseAnnotations(builder);
    done(modList, JavaElementType.MODIFIER_LIST);
    if (!expect(builder, JavaTokenType.PACKAGE_KEYWORD)) {
      statement.rollbackTo();
      return null;
    }
  }

  final PsiBuilder.Marker ref = myParser.getReferenceParser().parseJavaCodeReference(builder, true, false, false, false);
  if (ref == null) {
    statement.error(JavaErrorMessages.message("expected.class.or.interface"));
    return null;
  }

  semicolon(builder);

  done(statement, JavaElementType.PACKAGE_STATEMENT);
  return statement;
}
项目:intellij-ce-playground    文件:FileParser.java   
@Nullable
private PsiBuilder.Marker parseImportStatement(final PsiBuilder builder) {
  if (builder.getTokenType() != JavaTokenType.IMPORT_KEYWORD) return null;

  final PsiBuilder.Marker statement = builder.mark();
  builder.advanceLexer();

  final boolean isStatic = expect(builder, JavaTokenType.STATIC_KEYWORD);
  final IElementType type = isStatic ? JavaElementType.IMPORT_STATIC_STATEMENT : JavaElementType.IMPORT_STATEMENT;

  final boolean isOk = myParser.getReferenceParser().parseImportCodeReference(builder, isStatic);
  if (isOk) {
    semicolon(builder);
  }

  done(statement, type);
  return statement;
}
项目:intellij-ce-playground    文件:CallChunkBlockBuilder.java   
@NotNull
public Block create(@NotNull final List<ASTNode> subNodes, final Wrap wrap, @Nullable final Alignment alignment) {
  final ArrayList<Block> subBlocks = new ArrayList<Block>();
  final ASTNode firstNode = subNodes.get(0);
  if (firstNode.getElementType() == JavaTokenType.DOT) {
    AlignmentStrategy strategy = AlignmentStrategy.getNullStrategy();
    Block block = newJavaBlock(firstNode, mySettings, myJavaSettings, Indent.getNoneIndent(), null, strategy);
    subBlocks.add(block);
    subNodes.remove(0);
    if (!subNodes.isEmpty()) {
      subBlocks.add(create(subNodes, wrap, null));
    }
    return new SyntheticCodeBlock(subBlocks, alignment, mySettings, myJavaSettings, Indent.getContinuationIndent(myIndentSettings.USE_RELATIVE_INDENTS), wrap);
  }
  return new SyntheticCodeBlock(createJavaBlocks(subNodes), alignment, mySettings, myJavaSettings, Indent.getContinuationWithoutFirstIndent(myIndentSettings.USE_RELATIVE_INDENTS), null);
}
项目:intellij-ce-playground    文件:ReferenceParser.java   
@Nullable
public PsiBuilder.Marker parseTypeParameter(final PsiBuilder builder) {
  final PsiBuilder.Marker param = builder.mark();

  myParser.getDeclarationParser().parseAnnotations(builder);

  if (isKeywordAny(builder)) {
    dummy(builder);
  }

  final boolean wild = expect(builder, JavaTokenType.QUEST);
  if (!wild && !expect(builder, JavaTokenType.IDENTIFIER)) {
    param.rollbackTo();
    return null;
  }

  parseReferenceList(builder, JavaTokenType.EXTENDS_KEYWORD, JavaElementType.EXTENDS_BOUND_LIST, JavaTokenType.AND);

  if (!wild) {
    param.done(JavaElementType.TYPE_PARAMETER);
  }
  else {
    param.error(JavaErrorMessages.message("wildcard.not.expected"));
  }
  return param;
}
项目:intellij-ce-playground    文件:DeclarationParser.java   
private void parseEnumConstants(final PsiBuilder builder) {
  while (builder.getTokenType() != null) {
    if (expect(builder, JavaTokenType.SEMICOLON)) {
      return;
    }

    if (builder.getTokenType() == JavaTokenType.PRIVATE_KEYWORD || builder.getTokenType() == JavaTokenType.PROTECTED_KEYWORD) {
      error(builder, JavaErrorMessages.message("expected.semicolon"));
      return;
    }

    final PsiBuilder.Marker enumConstant = parseEnumConstant(builder);
    if (enumConstant == null) {
      error(builder, JavaErrorMessages.message("expected.identifier"));
    }

    if (!expect(builder, JavaTokenType.COMMA)) {
      if (builder.getTokenType() != null && builder.getTokenType() != JavaTokenType.SEMICOLON) {
        error(builder, JavaErrorMessages.message("expected.comma.or.semicolon"));
        return;
      }
    }
  }
}
项目:intellij-ce-playground    文件:DeclarationParser.java   
@NotNull
public PsiBuilder.Marker parseAnnotationValue(final PsiBuilder builder) {
  PsiBuilder.Marker result;

  final IElementType tokenType = builder.getTokenType();
  if (tokenType == JavaTokenType.AT) {
    result = parseAnnotation(builder);
  }
  else if (tokenType == JavaTokenType.LBRACE) {
    result = parseAnnotationArrayInitializer(builder);
  }
  else {
    result = myParser.getExpressionParser().parseConditional(builder);
  }

  if (result == null) {
    result = builder.mark();
    result.error(JavaErrorMessages.message("expected.value"));
  }

  return result;
}
项目:intellij-ce-playground    文件:PsiBuilderTest.java   
public void testDrop() throws Exception {
  myBuilder = createBuilder("package");

  final PsiBuilder.Marker fileMarker = myBuilder.mark();
  assertEquals("package", myBuilder.getTokenText());
  assertEquals(JavaTokenType.PACKAGE_KEYWORD, myBuilder.getTokenType());
  final PsiBuilder.Marker packageStatementMarker = myBuilder.mark();
  myBuilder.advanceLexer();
  assertTrue(myBuilder.eof());
  packageStatementMarker.drop();
  fileMarker.done(JavaStubElementTypes.JAVA_FILE);

  ASTNode fileNode = myBuilder.getTreeBuilt();
  assertNotNull(fileNode);
  assertEquals("package", fileNode.getText());
  assertSame(fileNode.getFirstChildNode(), fileNode.getLastChildNode());

  ASTNode leaf = fileNode.getFirstChildNode();
  assertNotNull(leaf);
  assertEquals(JavaTokenType.PACKAGE_KEYWORD, leaf.getElementType());
  assertEquals("package", leaf.getText());
  assertNull(leaf.getFirstChildNode());
}
项目:intellij-ce-playground    文件:JavaNameValuePairType.java   
@Override
public PsiNameValuePairStub createStub(LighterAST tree, LighterASTNode node, StubElement parentStub) {
  String name = null;
  String value = null;
  List<LighterASTNode> children = tree.getChildren(node);
  for (LighterASTNode child : children) {
    if (child.getTokenType() == JavaTokenType.IDENTIFIER) {
      name = RecordUtil.intern(tree.getCharTable(), child);
    }
    else if (child.getTokenType() == JavaElementType.LITERAL_EXPRESSION) {
      value = RecordUtil.intern(tree.getCharTable(), tree.getChildren(child).get(0));
      value = StringUtil.unquoteString(value);
    }
  }
  return new PsiNameValuePairStubImpl(parentStub, StringRef.fromString(name), StringRef.fromString(value));
}
项目:intellij-ce-playground    文件:JavaImportStatementElementType.java   
@Override
public PsiImportStatementStub createStub(LighterAST tree, LighterASTNode node, StubElement parentStub) {
  boolean isOnDemand = false;
  String refText = null;

  for (LighterASTNode child : tree.getChildren(node)) {
    IElementType type = child.getTokenType();
    if (type == JavaElementType.JAVA_CODE_REFERENCE || type == JavaElementType.IMPORT_STATIC_REFERENCE) {
      refText = JavaSourceUtil.getReferenceText(tree, child);
    }
    else if (type == JavaTokenType.ASTERISK) {
      isOnDemand = true;
    }
  }

  byte flags = PsiImportStatementStubImpl.packFlags(isOnDemand, node.getTokenType() == JavaElementType.IMPORT_STATIC_STATEMENT);
  return new PsiImportStatementStubImpl(parentStub, refText, flags);
}
项目:intellij-ce-playground    文件:RecordUtil.java   
public static boolean isDeprecatedByAnnotation(@NotNull LighterAST tree, @NotNull LighterASTNode modList) {
  for (final LighterASTNode child : tree.getChildren(modList)) {
    if (child.getTokenType() == JavaElementType.ANNOTATION) {
      final LighterASTNode ref = LightTreeUtil.firstChildOfType(tree, child, JavaElementType.JAVA_CODE_REFERENCE);
      if (ref != null) {
        final LighterASTNode id = LightTreeUtil.firstChildOfType(tree, ref, JavaTokenType.IDENTIFIER);
        if (id != null) {
          final String name = intern(tree.getCharTable(), id);
          if (DEPRECATED_ANNOTATION_NAME.equals(name)) return true;
        }
      }
    }
  }

  return false;
}
项目:intellij-ce-playground    文件:EndOfLineCommentPredicate.java   
public boolean satisfiedBy(PsiElement element) {
  if (!(element instanceof PsiComment)) {
    return false;
  }
  if (element instanceof PsiDocComment) {
    return false;
  }
  final PsiComment comment = (PsiComment)element;
  final IElementType type = comment.getTokenType();
  if (!JavaTokenType.END_OF_LINE_COMMENT.equals(type)) {
    return false;
  }
  final String text = comment.getText();
  final Matcher matcher = NO_INSPECTION_PATTERN.matcher(text);
  return !matcher.matches();
}
项目:intellij-ce-playground    文件:TypeParameterListElement.java   
@Override
public int getChildRole(final ASTNode child) {
  LOG.assertTrue(child.getTreeParent() == this);
  final IElementType elType = child.getElementType();
  if (elType == JavaElementType.TYPE_PARAMETER) {
    return ChildRole.TYPE_PARAMETER_IN_LIST;
  }
  else if (elType == JavaTokenType.COMMA) {
    return ChildRole.COMMA;
  }
  else if (elType == JavaTokenType.LT) {
    return ChildRole.LT_IN_TYPE_LIST;
  }
  else if (elType == JavaTokenType.GT) {
    return ChildRole.GT_IN_TYPE_LIST;
  }
  else {
    return ChildRoleBase.NONE;
  }
}
项目:intellij-ce-playground    文件:LiteralExpressionTokenizer.java   
@Override
public void tokenize(@NotNull PsiLiteralExpression element, TokenConsumer consumer) {
  PsiLiteralExpressionImpl literalExpression = (PsiLiteralExpressionImpl)element;
  if (literalExpression.getLiteralElementType() != JavaTokenType.STRING_LITERAL) return;  // not a string literal

  String text = literalExpression.getInnerText();
  if (StringUtil.isEmpty(text) || text.length() <= 2) { // optimisation to avoid expensive injection check
    return;
  }
  if (InjectedLanguageUtil.hasInjections(literalExpression)) return;

  final PsiModifierListOwner listOwner = PsiTreeUtil.getParentOfType(element, PsiModifierListOwner.class);
  if (listOwner != null && AnnotationUtil.isAnnotated(listOwner, Collections.singleton(AnnotationUtil.NON_NLS), false, false)) {
    return;
  }

  if (!text.contains("\\")) {
    consumer.consumeToken(element, PlainTextSplitter.getInstance());
  }
  else {
    processTextWithEscapeSequences(element, text, consumer);
  }
}
项目:intellij-ce-playground    文件:TypeCastSelectioner.java   
@Override
public List<TextRange> select(PsiElement e, CharSequence editorText, int cursorOffset, Editor editor) {
  List<TextRange> result = new ArrayList<TextRange>();
  result.addAll(expandToWholeLine(editorText, e.getTextRange(), false));

  PsiTypeCastExpression expression = (PsiTypeCastExpression)e;
  PsiElement[] children = expression.getChildren();
  PsiElement lParen = null;
  PsiElement rParen = null;
  for (PsiElement child : children) {
    if (child instanceof PsiJavaToken) {
      PsiJavaToken token = (PsiJavaToken)child;
      if (token.getTokenType() == JavaTokenType.LPARENTH) lParen = token;
      if (token.getTokenType() == JavaTokenType.RPARENTH) rParen = token;
    }
  }

  if (lParen != null && rParen != null) {
    result.addAll(expandToWholeLine(editorText,
                                    new TextRange(lParen.getTextRange().getStartOffset(),
                                                  rParen.getTextRange().getEndOffset()),
                                    false));
  }

  return result;
}
项目:intellij-ce-playground    文件:LabeledJavaBlock.java   
@Override
protected List<Block> buildChildren() {
  final ArrayList<Block> result = new ArrayList<Block>();
  ASTNode child = myNode.getFirstChildNode();
  Indent currentIndent = getLabelIndent();
  Wrap currentWrap = null;
  while (child != null) {
    if (!FormatterUtil.containsWhiteSpacesOnly(child) && child.getTextLength() > 0){
      result.add(createJavaBlock(child, mySettings, myJavaSettings, currentIndent, currentWrap, AlignmentStrategy.getNullStrategy()));
      if (child.getElementType() == JavaTokenType.COLON) {
        currentIndent = Indent.getNoneIndent();
        currentWrap =Wrap.createWrap(WrapType.ALWAYS, true);
      }
    }
    child = child.getTreeNext();
  }
  return result;
}
项目:intellij-ce-playground    文件:ParameterElement.java   
@Override
public ASTNode findChildByRole(int role) {
  LOG.assertTrue(ChildRole.isUnique(role));

  if (role == ChildRole.MODIFIER_LIST) {
    return findChildByType(JavaElementType.MODIFIER_LIST);
  }
  else if (role == ChildRole.NAME) {
    return findChildByType(JavaTokenType.IDENTIFIER);
  }
  else if (role == ChildRole.TYPE) {
    return findChildByType(JavaElementType.TYPE);
  }
  else {
    return null;
  }
}
项目:intellij-ce-playground    文件:ParameterElement.java   
@Override
public int getChildRole(ASTNode child) {
  LOG.assertTrue(child.getTreeParent() == this);

  IElementType i = child.getElementType();
  if (i == JavaElementType.MODIFIER_LIST) {
    return ChildRole.MODIFIER_LIST;
  }
  else if (i == JavaElementType.TYPE) {
    return getChildRole(child, ChildRole.TYPE);
  }
  else if (i == JavaTokenType.IDENTIFIER) {
    return getChildRole(child, ChildRole.NAME);
  }
  else {
    return ChildRoleBase.NONE;
  }
}
项目:intellij-ce-playground    文件:CStyleCommentPredicate.java   
public boolean satisfiedBy(PsiElement element) {
  if (!(element instanceof PsiComment)) {
    return false;
  }
  if (element instanceof PsiDocComment) {
    return false;
  }
  final PsiComment comment = (PsiComment)element;
  final IElementType type = comment.getTokenType();
  if (!JavaTokenType.C_STYLE_COMMENT.equals(type)) {
    return false;
  }
  final PsiElement sibling = PsiTreeUtil.nextLeaf(comment);
  if (!(sibling instanceof PsiWhiteSpace)) {
    return false;
  }
  final String whitespaceText = sibling.getText();
  return whitespaceText.indexOf((int)'\n') >= 0 ||
         whitespaceText.indexOf((int)'\r') >= 0;
}
项目:intellij-ce-playground    文件:ChainMethodCallsBlockBuilder.java   
@NotNull
private List<ChainedCallChunk> splitMethodCallOnChunksByDots(@NotNull List<ASTNode> nodes) {
  List<ChainedCallChunk> result = new ArrayList<ChainedCallChunk>();

  List<ASTNode> current = new ArrayList<ASTNode>();
  for (ASTNode node : nodes) {
    if (node.getElementType() == JavaTokenType.DOT || node.getPsi() instanceof PsiComment) {
      result.add(new ChainedCallChunk(current));
      current = new ArrayList<ASTNode>();
    }
    current.add(node);
  }

  result.add(new ChainedCallChunk(current));
  return result;
}
项目:intellij-ce-playground    文件:ExtendsListElement.java   
@Override
public int getChildRole(ASTNode child) {
  LOG.assertTrue(child.getTreeParent() == this);
  IElementType i = child.getElementType();
  if (i == JavaTokenType.EXTENDS_KEYWORD) {
    return ChildRole.EXTENDS_KEYWORD;
  }
  else if (i == JavaTokenType.COMMA) {
    return ChildRole.COMMA;
  }
  else if (i == JavaElementType.JAVA_CODE_REFERENCE) {
    return ChildRole.REFERENCE_IN_LIST;
  }
  else {
    return ChildRoleBase.NONE;
  }
}
项目:intellij-ce-playground    文件:EnumConstantElement.java   
@Override
public ASTNode findChildByRole(int role){
  LOG.assertTrue(ChildRole.isUnique(role));
  switch(role){
    default:
      return null;

    case ChildRole.DOC_COMMENT:
      return PsiImplUtil.findDocComment(this);

    case ChildRole.NAME:
      return findChildByType(JavaTokenType.IDENTIFIER);

    case ChildRole.ARGUMENT_LIST:
      return findChildByType(EXPRESSION_LIST);

    case ChildRole.ANONYMOUS_CLASS:
      return findChildByType(ENUM_CONSTANT_INITIALIZER);

    case ChildRole.MODIFIER_LIST:
      return findChildByType(JavaElementType.MODIFIER_LIST);
  }
}
项目:intellij-ce-playground    文件:ImportStatementBaseElement.java   
@Override
public ASTNode findChildByRole(int role){
  LOG.assertTrue(ChildRole.isUnique(role));
  switch(role){
    default:
      return null;

    case ChildRole.IMPORT_KEYWORD:
      return getFirstChildNode();

    case ChildRole.IMPORT_ON_DEMAND_DOT:
      return findChildByType(JavaTokenType.DOT);

    case ChildRole.IMPORT_ON_DEMAND_ASTERISK:
      return findChildByType(JavaTokenType.ASTERISK);

    case ChildRole.CLOSING_SEMICOLON:
      return TreeUtil.findChildBackward(this, JavaTokenType.SEMICOLON);
  }
}
项目:intellij-ce-playground    文件:ImportStatementBaseElement.java   
@Override
public int getChildRole(ASTNode child) {
  LOG.assertTrue(child.getTreeParent() == this);
  IElementType i = child.getElementType();
  if (i == JavaTokenType.IMPORT_KEYWORD) {
    return ChildRole.IMPORT_KEYWORD;
  }
  else if (i == JavaElementType.JAVA_CODE_REFERENCE) {
    return ChildRole.IMPORT_REFERENCE;
  }
  else if (i == JavaTokenType.DOT) {
    return ChildRole.IMPORT_ON_DEMAND_DOT;
  }
  else if (i == JavaTokenType.ASTERISK) {
    return ChildRole.IMPORT_ON_DEMAND_ASTERISK;
  }
  else if (i == JavaTokenType.SEMICOLON) {
    return ChildRole.CLOSING_SEMICOLON;
  }
  else {
    return ChildRoleBase.NONE;
  }
}
项目:intellij-ce-playground    文件:ReferenceListElement.java   
@Override
public void deleteChildInternal(@NotNull ASTNode child) {
  if (child.getElementType() == JavaElementType.JAVA_CODE_REFERENCE){
    ASTNode next = PsiImplUtil.skipWhitespaceAndComments(child.getTreeNext());
    if (next != null && next.getElementType() == JavaTokenType.COMMA){
      deleteChildInternal(next);
    }
    else{
      ASTNode prev = PsiImplUtil.skipWhitespaceAndCommentsBack(child.getTreePrev());
      if (prev != null){
        if (prev.getElementType() == JavaTokenType.COMMA
            || prev.getElementType() == getKeywordType()
            ){
          deleteChildInternal(prev);
        }
      }
    }
  }
  super.deleteChildInternal(child);
}
项目:intellij-ce-playground    文件:PsiThrowsListImpl.java   
@Override
public int getChildRole(ASTNode child) {
  LOG.assertTrue(child.getTreeParent() == this);
  IElementType i = child.getElementType();
  if (i == JavaTokenType.THROWS_KEYWORD) {
    return ChildRole.THROWS_KEYWORD;
  }
  else if (i == JavaTokenType.COMMA) {
    return ChildRole.COMMA;
  }
  else if (i == JavaElementType.JAVA_CODE_REFERENCE) {
    return ChildRole.REFERENCE_IN_LIST;
  }
  else {
    return ChildRoleBase.NONE;
  }
}
项目:intellij-ce-playground    文件:JavaFilterLexer.java   
@Override
public void advance() {
  final IElementType tokenType = myDelegate.getTokenType();

  if (tokenType == JavaTokenType.IDENTIFIER
      || tokenType == JavaTokenType.LONG_LITERAL
      || tokenType == JavaTokenType.INTEGER_LITERAL
      || tokenType == JavaTokenType.CHARACTER_LITERAL 
      || tokenType == JavaTokenType.ARROW 
      || tokenType == JavaTokenType.DOUBLE_COLON) {
    addOccurrenceInToken(UsageSearchContext.IN_CODE);
  }
  else if (tokenType == JavaTokenType.STRING_LITERAL) {
    scanWordsInToken(UsageSearchContext.IN_STRINGS | UsageSearchContext.IN_FOREIGN_LANGUAGES, false, true);
  }
  else if (ElementType.JAVA_COMMENT_BIT_SET.contains(tokenType)) {
    scanWordsInToken(UsageSearchContext.IN_COMMENTS, false, false);
    advanceTodoItemCountsInToken();
  }
  else if (!ourSkipWordsScanSet.contains(tokenType)) {
    scanWordsInToken(UsageSearchContext.IN_PLAIN_TEXT, false, false);
  }

  myDelegate.advance();
}
项目:intellij-ce-playground    文件:StateMerger.java   
private void restoreOtherInequalities(Fact removedFact, Collection<DfaMemoryStateImpl> mergedGroup, DfaMemoryStateImpl state) {
  Set<DfaConstValue> inequalitiesToRestore = null;
  for (DfaMemoryStateImpl member : mergedGroup) {
    LinkedHashSet<Fact> memberFacts = getFacts(member);
    if (memberFacts.contains(removedFact)) {
      Set<DfaConstValue> otherInequalities = getOtherInequalities(removedFact, memberFacts, member);
      if (inequalitiesToRestore == null) {
        inequalitiesToRestore = otherInequalities;
      } else {
        inequalitiesToRestore.retainAll(otherInequalities);
      }
    }
  }
  if (inequalitiesToRestore != null) {
    DfaRelationValue.Factory relationFactory = state.getFactory().getRelationFactory();
    for (DfaConstValue toRestore : inequalitiesToRestore) {
      state.applyCondition(relationFactory.createRelation(removedFact.myVar, toRestore, JavaTokenType.EQEQ, true));
    }
  }
}
项目:intellij-ce-playground    文件:IfToSwitchPredicate.java   
public boolean satisfiedBy(PsiElement element) {
  if (!(element instanceof PsiJavaToken)) {
    return false;
  }
  final PsiJavaToken token = (PsiJavaToken)element;
  if (token.getTokenType() != JavaTokenType.IF_KEYWORD) {
    return false;
  }
  final PsiElement parent = element.getParent();
  if (!(parent instanceof PsiIfStatement)) {
    return false;
  }
  final PsiIfStatement statement = (PsiIfStatement)parent;
  if (ErrorUtil.containsError(statement)) {
    return false;
  }
  return SwitchUtils.getSwitchExpression(statement, 0) != null;
}
项目:intellij-ce-playground    文件:StatementParser.java   
@NotNull
private PsiBuilder.Marker parseIfStatement(final PsiBuilder builder) {
  final PsiBuilder.Marker statement = builder.mark();
  builder.advanceLexer();

  if (!parseExpressionInParenth(builder)) {
    done(statement, JavaElementType.IF_STATEMENT);
    return statement;
  }

  final PsiBuilder.Marker thenStatement = parseStatement(builder);
  if (thenStatement == null) {
    error(builder, JavaErrorMessages.message("expected.statement"));
    done(statement, JavaElementType.IF_STATEMENT);
    return statement;
  }

  if (!expect(builder, JavaTokenType.ELSE_KEYWORD)) {
    done(statement, JavaElementType.IF_STATEMENT);
    return statement;
  }

  final PsiBuilder.Marker elseStatement = parseStatement(builder);
  if (elseStatement == null) {
    error(builder, JavaErrorMessages.message("expected.statement"));
  }

  done(statement, JavaElementType.IF_STATEMENT);
  return statement;
}
项目:intellij-ce-playground    文件:StatementParser.java   
@NotNull
private PsiBuilder.Marker parseForLoopFromInitialization(final PsiBuilder builder, final PsiBuilder.Marker statement) {
  final PsiBuilder.Marker init = parseStatement(builder);
  if (init == null){
    error(builder, JavaErrorMessages.message("expected.statement"));
    if (!expect(builder, JavaTokenType.RPARENTH)) {
      done(statement, JavaElementType.FOR_STATEMENT);
      return statement;
    }
  }
  else {
    myParser.getExpressionParser().parse(builder);
    if (!expect(builder, JavaTokenType.SEMICOLON)) {
      error(builder, JavaErrorMessages.message("expected.semicolon"));
      if (!expect(builder, JavaTokenType.RPARENTH)) {
        done(statement, JavaElementType.FOR_STATEMENT);
        return statement;
      }
    }
    else {
      parseExpressionOrExpressionList(builder);
      if (!expect(builder, JavaTokenType.RPARENTH)) {
        error(builder, JavaErrorMessages.message("expected.rparen"));
        done(statement, JavaElementType.FOR_STATEMENT);
        return statement;
      }
    }
  }

  final PsiBuilder.Marker bodyStatement = parseStatement(builder);
  if (bodyStatement == null) {
    error(builder, JavaErrorMessages.message("expected.statement"));
  }

  done(statement, JavaElementType.FOR_STATEMENT);
  return statement;
}