示例#1
0
 public EnvDTE.CodeFunction AddFunction(string name, EnvDTE.vsCMFunction kind, object type, object position, EnvDTE.vsCMAccess access, object location)
 {
     return(FileCodeModel.EnsureEditor(() =>
     {
         return FileCodeModel.AddFunction(LookupNode(), name, kind, type, position, access);
     }));
 }
示例#2
0
 public EnvDTE.CodeFunction AddFunction(
     string name,
     EnvDTE.vsCMFunction kind,
     object type,
     object position,
     EnvDTE.vsCMAccess access
     ) => throw Exceptions.ThrowEFail();
示例#3
0
 public EnvDTE.CodeFunction AddFunction(
     string name,
     object location,
     EnvDTE.vsCMFunction kind,
     object type,
     object position,
     EnvDTE.vsCMAccess access
     ) => GetFileCodeModel(location).Object.AddFunction(name, kind, type, position, access);
        internal EnvDTE.CodeFunction AddFunction(SyntaxNode containerNode, string name, EnvDTE.vsCMFunction kind, object type, object position, EnvDTE.vsCMAccess access)
        {
            kind = CodeModelService.ValidateFunctionKind(containerNode, kind, name);

            SyntaxNode newMember;

            if (kind == EnvDTE.vsCMFunction.vsCMFunctionSub ||
                kind == EnvDTE.vsCMFunction.vsCMFunctionFunction)
            {
                var containerNodePosition = containerNode.SpanStart;
                var semanticModel         = GetSemanticModel();
                var returnType            = kind == EnvDTE.vsCMFunction.vsCMFunctionFunction
                    ? CodeModelService.GetTypeSymbol(type, semanticModel, containerNodePosition)
                    : semanticModel.Compilation.GetSpecialType(SpecialType.System_Void);

                newMember = CreateMethodDeclaration(containerNode, CodeModelService.GetUnescapedName(name), access, returnType);
            }
            else if (kind == EnvDTE.vsCMFunction.vsCMFunctionConstructor)
            {
                newMember = CreateConstructorDeclaration(containerNode, CodeModelService.GetUnescapedName(name), access);
            }
            else
            {
                newMember = CreateDestructorDeclaration(containerNode, CodeModelService.GetUnescapedName(name));
            }

            var insertionIndex = CodeModelService.PositionVariantToMemberInsertionIndex(position, containerNode, fileCodeModel: this);

            newMember = InsertMember(containerNode, newMember, insertionIndex);

            return((EnvDTE.CodeFunction)CreateInternalCodeMember(this.State, fileCodeModel: this, node: newMember));
        }
示例#5
0
        internal EnvDTE.CodeFunction AddFunction(SyntaxNode containerNode, string name, EnvDTE.vsCMFunction kind, object type, object position, EnvDTE.vsCMAccess access)
        {
            kind = CodeModelService.ValidateFunctionKind(containerNode, kind, name);

            SyntaxNode newMember;

            if (kind is EnvDTE.vsCMFunction.vsCMFunctionSub or
                EnvDTE.vsCMFunction.vsCMFunctionFunction)
            {
                var containerNodePosition = containerNode.SpanStart;
                var semanticModel         = GetSemanticModel();
                var returnType            = kind == EnvDTE.vsCMFunction.vsCMFunctionFunction
                    ? CodeModelService.GetTypeSymbol(type, semanticModel, containerNodePosition)
                    : semanticModel.Compilation.GetSpecialType(SpecialType.System_Void);

                newMember = CreateMethodDeclaration(containerNode, CodeModelService.GetUnescapedName(name), access, returnType);
            }