Java 类com.intellij.psi.impl.java.stubs.impl.PsiMethodStubImpl 实例源码

项目:intellij-ce-playground    文件:JavaMethodElementType.java   
@Override
public void serialize(@NotNull final PsiMethodStub stub, @NotNull final StubOutputStream dataStream) throws IOException {
  dataStream.writeName(stub.getName());
  TypeInfo.writeTYPE(dataStream, stub.getReturnTypeText(false));
  dataStream.writeByte(((PsiMethodStubImpl)stub).getFlags());
  if (stub.isAnnotationMethod()) {
    dataStream.writeName(stub.getDefaultValueText());
  }
}
项目:intellij-ce-playground    文件:JavaMethodElementType.java   
@NotNull
@Override
public PsiMethodStub deserialize(@NotNull final StubInputStream dataStream, final StubElement parentStub) throws IOException {
  StringRef name = dataStream.readName();
  final TypeInfo type = TypeInfo.readTYPE(dataStream);
  byte flags = dataStream.readByte();
  final StringRef defaultMethodValue = PsiMethodStubImpl.isAnnotationMethod(flags) ? dataStream.readName() : null;
  return new PsiMethodStubImpl(parentStub, StringRef.toString(name), type, flags, StringRef.toString(defaultMethodValue));
}
项目:tools-idea    文件:JavaMethodElementType.java   
@Override
public void serialize(@NotNull final PsiMethodStub stub, @NotNull final StubOutputStream dataStream) throws IOException {
  dataStream.writeName(stub.getName());
  TypeInfo.writeTYPE(dataStream, stub.getReturnTypeText(false));
  dataStream.writeByte(((PsiMethodStubImpl)stub).getFlags());
  if (stub.isAnnotationMethod()) {
    dataStream.writeName(stub.getDefaultValueText());
  }
}
项目:tools-idea    文件:JavaMethodElementType.java   
@NotNull
@Override
public PsiMethodStub deserialize(@NotNull final StubInputStream dataStream, final StubElement parentStub) throws IOException {
  StringRef name = dataStream.readName();
  final TypeInfo type = TypeInfo.readTYPE(dataStream);
  byte flags = dataStream.readByte();
  final StringRef defaultMethodValue = PsiMethodStubImpl.isAnnotationMethod(flags) ? dataStream.readName() : null;
  return new PsiMethodStubImpl(parentStub, name, type, flags, defaultMethodValue);
}
项目:consulo-java    文件:JavaMethodElementType.java   
@Override
public void serialize(@NotNull final PsiMethodStub stub, @NotNull final StubOutputStream dataStream) throws IOException
{
    dataStream.writeName(stub.getName());
    TypeInfo.writeTYPE(dataStream, stub.getReturnTypeText(false));
    dataStream.writeByte(((PsiMethodStubImpl) stub).getFlags());
    if(stub.isAnnotationMethod())
    {
        dataStream.writeName(stub.getDefaultValueText());
    }
}
项目:consulo-java    文件:JavaMethodElementType.java   
@NotNull
@Override
public PsiMethodStub deserialize(@NotNull final StubInputStream dataStream, final StubElement parentStub) throws IOException
{
    StringRef name = dataStream.readName();
    final TypeInfo type = TypeInfo.readTYPE(dataStream);
    byte flags = dataStream.readByte();
    final StringRef defaultMethodValue = PsiMethodStubImpl.isAnnotationMethod(flags) ? dataStream.readName() : null;
    return new PsiMethodStubImpl(parentStub, StringRef.toString(name), type, flags, StringRef.toString(defaultMethodValue));
}
项目:intellij-ce-playground    文件:JavaMethodElementType.java   
@Override
public PsiMethodStub createStub(final LighterAST tree, final LighterASTNode node, final StubElement parentStub) {
  String name = null;
  boolean isConstructor = true;
  boolean isVarArgs = false;
  boolean isDeprecatedByComment = false;
  boolean hasDeprecatedAnnotation = false;
  boolean hasDocComment = false;
  String defValueText = null;

  boolean expectingDef = false;
  for (final LighterASTNode child : tree.getChildren(node)) {
    final IElementType type = child.getTokenType();
    if (type == JavaDocElementType.DOC_COMMENT) {
      hasDocComment = true;
      isDeprecatedByComment = RecordUtil.isDeprecatedByDocComment(tree, child);
    }
    else if (type == JavaElementType.MODIFIER_LIST) {
      hasDeprecatedAnnotation = RecordUtil.isDeprecatedByAnnotation(tree, child);
    }
    else if (type == JavaElementType.TYPE) {
      isConstructor = false;
    }
    else if (type == JavaTokenType.IDENTIFIER) {
      name = RecordUtil.intern(tree.getCharTable(), child);
    }
    else if (type == JavaElementType.PARAMETER_LIST) {
      final List<LighterASTNode> params = LightTreeUtil.getChildrenOfType(tree, child, JavaElementType.PARAMETER);
      if (!params.isEmpty()) {
        final LighterASTNode pType = LightTreeUtil.firstChildOfType(tree, params.get(params.size() - 1), JavaElementType.TYPE);
        if (pType != null) {
          isVarArgs = (LightTreeUtil.firstChildOfType(tree, pType, JavaTokenType.ELLIPSIS) != null);
        }
      }
    }
    else if (type == JavaTokenType.DEFAULT_KEYWORD) {
      expectingDef = true;
    }
    else if (expectingDef && !ElementType.JAVA_COMMENT_OR_WHITESPACE_BIT_SET.contains(type) &&
             type != JavaTokenType.SEMICOLON && type != JavaElementType.CODE_BLOCK) {
      defValueText = LightTreeUtil.toFilteredString(tree, child, null);
      break;
    }
  }

  TypeInfo typeInfo = isConstructor ? TypeInfo.createConstructorType() : TypeInfo.create(tree, node, parentStub);
  boolean isAnno = (node.getTokenType() == JavaElementType.ANNOTATION_METHOD);
  byte flags = PsiMethodStubImpl.packFlags(isConstructor, isAnno, isVarArgs, isDeprecatedByComment, hasDeprecatedAnnotation, hasDocComment);

  return new PsiMethodStubImpl(parentStub, name, typeInfo, flags, defValueText);
}
项目:tools-idea    文件:JavaMethodElementType.java   
@Override
public PsiMethodStub createStub(final LighterAST tree, final LighterASTNode node, final StubElement parentStub) {
  String name = null;
  boolean isConstructor = true;
  boolean isVarArgs = false;
  boolean isDeprecatedByComment = false;
  boolean hasDeprecatedAnnotation = false;
  String defValueText = null;

  boolean expectingDef = false;
  for (final LighterASTNode child : tree.getChildren(node)) {
    final IElementType type = child.getTokenType();
    if (type == JavaDocElementType.DOC_COMMENT) {
      isDeprecatedByComment = RecordUtil.isDeprecatedByDocComment(tree, child);
    }
    else if (type == JavaElementType.MODIFIER_LIST) {
      hasDeprecatedAnnotation = RecordUtil.isDeprecatedByAnnotation(tree, child);
    }
    else if (type == JavaElementType.TYPE) {
      isConstructor = false;
    }
    else if (type == JavaTokenType.IDENTIFIER) {
      name = RecordUtil.intern(tree.getCharTable(), child);
    }
    else if (type == JavaElementType.PARAMETER_LIST) {
      final List<LighterASTNode> params = LightTreeUtil.getChildrenOfType(tree, child, JavaElementType.PARAMETER);
      if (params.size() > 0) {
        final LighterASTNode pType = LightTreeUtil.firstChildOfType(tree, params.get(params.size() - 1), JavaElementType.TYPE);
        if (pType != null) {
          isVarArgs = (LightTreeUtil.firstChildOfType(tree, pType, JavaTokenType.ELLIPSIS) != null);
        }
      }
    }
    else if (type == JavaTokenType.DEFAULT_KEYWORD) {
      expectingDef = true;
    }
    else if (expectingDef && !ElementType.JAVA_COMMENT_OR_WHITESPACE_BIT_SET.contains(type) &&
             type != JavaTokenType.SEMICOLON && type != JavaElementType.CODE_BLOCK) {
      defValueText = LightTreeUtil.toFilteredString(tree, child, null);
      break;
    }
  }

  TypeInfo typeInfo = isConstructor ? TypeInfo.createConstructorType() : TypeInfo.create(tree, node, parentStub);
  boolean isAnno = (node.getTokenType() == JavaElementType.ANNOTATION_METHOD);
  byte flags = PsiMethodStubImpl.packFlags(isConstructor, isAnno, isVarArgs, isDeprecatedByComment, hasDeprecatedAnnotation);

  return new PsiMethodStubImpl(parentStub, StringRef.fromString(name), typeInfo, flags, StringRef.fromString(defValueText));
}
项目:consulo-java    文件:JavaMethodElementType.java   
@Override
public PsiMethodStub createStub(final LighterAST tree, final LighterASTNode node, final StubElement parentStub)
{
    String name = null;
    boolean isConstructor = true;
    boolean isVarArgs = false;
    boolean isDeprecatedByComment = false;
    boolean hasDeprecatedAnnotation = false;
    boolean hasDocComment = false;
    String defValueText = null;

    boolean expectingDef = false;
    for(final LighterASTNode child : tree.getChildren(node))
    {
        final IElementType type = child.getTokenType();
        if(type == JavaDocElementType.DOC_COMMENT)
        {
            hasDocComment = true;
            isDeprecatedByComment = RecordUtil.isDeprecatedByDocComment(tree, child);
        }
        else if(type == JavaElementType.MODIFIER_LIST)
        {
            hasDeprecatedAnnotation = RecordUtil.isDeprecatedByAnnotation(tree, child);
        }
        else if(type == JavaElementType.TYPE)
        {
            isConstructor = false;
        }
        else if(type == JavaTokenType.IDENTIFIER)
        {
            name = RecordUtil.intern(tree.getCharTable(), child);
        }
        else if(type == JavaElementType.PARAMETER_LIST)
        {
            final List<LighterASTNode> params = LightTreeUtil.getChildrenOfType(tree, child, JavaElementType.PARAMETER);
            if(!params.isEmpty())
            {
                final LighterASTNode pType = LightTreeUtil.firstChildOfType(tree, params.get(params.size() - 1), JavaElementType.TYPE);
                if(pType != null)
                {
                    isVarArgs = (LightTreeUtil.firstChildOfType(tree, pType, JavaTokenType.ELLIPSIS) != null);
                }
            }
        }
        else if(type == JavaTokenType.DEFAULT_KEYWORD)
        {
            expectingDef = true;
        }
        else if(expectingDef && !ElementType.JAVA_COMMENT_OR_WHITESPACE_BIT_SET.contains(type) &&
                type != JavaTokenType.SEMICOLON && type != JavaElementType.CODE_BLOCK)
        {
            defValueText = LightTreeUtil.toFilteredString(tree, child, null);
            break;
        }
    }

    TypeInfo typeInfo = isConstructor ? TypeInfo.createConstructorType() : TypeInfo.create(tree, node, parentStub);
    boolean isAnno = (node.getTokenType() == JavaElementType.ANNOTATION_METHOD);
    byte flags = PsiMethodStubImpl.packFlags(isConstructor, isAnno, isVarArgs, isDeprecatedByComment, hasDeprecatedAnnotation, hasDocComment);

    return new PsiMethodStubImpl(parentStub, name, typeInfo, flags, defValueText);
}