public ClassModuleDeclaration(
     QualifiedMemberName qualifiedName,
     Declaration projectDeclaration,
     string name,
     bool isBuiltIn,
     IEnumerable <IAnnotation> annotations,
     Attributes attributes, bool hasDefaultInstanceVariable = false)
     : base(
         qualifiedName,
         projectDeclaration,
         projectDeclaration,
         name,
         null,
         false,
         false,
         Accessibility.Public,
         DeclarationType.ClassModule,
         null,
         Selection.Home,
         false,
         null,
         isBuiltIn,
         annotations,
         attributes)
 {
     if (hasDefaultInstanceVariable)
     {
         _hasPredeclaredId = true;
     }
     _supertypeNames = new List <string>();
     _supertypes     = new HashSet <Declaration>();
     _subtypes       = new HashSet <Declaration>();
 }
예제 #2
0
 public ValuedDeclaration(
     QualifiedMemberName qualifiedName,
     Declaration parentDeclaration,
     string parentScope,
     string asTypeName,
     VBAParser.AsTypeClauseContext asTypeContext,
     string typeHint,
     IEnumerable <IParseTreeAnnotation> annotations,
     Accessibility accessibility,
     DeclarationType declarationType,
     string value,
     ParserRuleContext context,
     Selection selection,
     bool isUserDefined = true)
     : base(
         qualifiedName,
         parentDeclaration,
         parentScope,
         asTypeName,
         typeHint,
         true,
         false,
         accessibility,
         declarationType,
         context,
         null,
         selection,
         false,
         asTypeContext,
         isUserDefined,
         annotations)
 {
     Expression = value;
 }
예제 #3
0
        public override void Run(QualifiedMemberName qualifiedMemberName)
        {
            // note: does not work. http://stackoverflow.com/q/31954364/1188513
            //var app = Application.GetType();
            //app.InvokeMember(qualifiedMemberName.MemberName, BindingFlags.InvokeMethod | BindingFlags.Default, null, Application, null);
            //Application.Run(qualifiedMemberName.ToString());

            //note: this will work, but not implemented yet http://stackoverflow.com/questions/31954364#36889671
            //TaskItem taskitem = Application.CreateItem(OlItemType.olTaskItem);
            //taskitem.Subject = "Rubberduck";
            //taskitem.Body = qualifiedMemberName.MemberName;

            try
            {
                var               app = Application;
                var               exp = app.ActiveExplorer();
                CommandBar        cb  = exp.CommandBars.Add("RubberduckCallbackProxy", Temporary: true);
                CommandBarControl btn = cb.Controls.Add(MsoControlType.msoControlButton, 1);
                btn.OnAction = qualifiedMemberName.ToString();
                btn.Execute();
                cb.Delete();
            }
            catch {
            }
        }
예제 #4
0
 public SubroutineDeclaration(
     QualifiedMemberName name,
     Declaration parent,
     Declaration parentScope,
     string asTypeName,
     Accessibility accessibility,
     ParserRuleContext context,
     Selection selection,
     bool isUserDefined,
     IEnumerable <IAnnotation> annotations,
     Attributes attributes)
     : base(
         name,
         parent,
         parentScope,
         asTypeName,
         null,
         false,
         false,
         accessibility,
         DeclarationType.Procedure,
         context,
         selection,
         false,
         null,
         isUserDefined,
         annotations,
         attributes)
 {
     _parameters = new List <Declaration>();
 }
 public PropertyLetDeclaration(
     QualifiedMemberName name,
     Declaration parent,
     Declaration parentScope,
     string asTypeName,
     Accessibility accessibility,
     ParserRuleContext context,
     ParserRuleContext attributesPassContext,
     Selection selection,
     bool isUserDefined,
     IEnumerable <IParseTreeAnnotation> annotations,
     Attributes attributes)
     : base(
         name,
         parent,
         parentScope,
         asTypeName,
         null,
         null,
         accessibility,
         DeclarationType.PropertyLet,
         context,
         attributesPassContext,
         selection,
         false,
         isUserDefined,
         annotations,
         attributes)
 {
 }
예제 #6
0
 public Declaration(
     QualifiedMemberName qualifiedName,
     Declaration parentDeclaration,
     string parentScope,
     string asTypeName,
     string typeHint,
     bool isSelfAssigned,
     bool isWithEvents,
     Accessibility accessibility,
     DeclarationType declarationType,
     bool isArray,
     VBAParser.AsTypeClauseContext asTypeContext,
     bool isUserDefined = true,
     IEnumerable <IAnnotation> annotations = null,
     Attributes attributes = null)
     : this(
         qualifiedName,
         parentDeclaration,
         parentScope,
         asTypeName,
         typeHint,
         isSelfAssigned,
         isWithEvents,
         accessibility,
         declarationType,
         null,
         null,
         Selection.Home,
         isArray,
         asTypeContext,
         isUserDefined,
         annotations,
         attributes)
 {
 }
예제 #7
0
 public EventDeclaration(
     QualifiedMemberName name,
     Declaration parent,
     Declaration parentScope,
     string asTypeName,
     VBAParser.AsTypeClauseContext asTypeContext,
     string typeHint,
     Accessibility accessibility,
     ParserRuleContext context,
     Selection selection,
     bool isArray,
     bool isUserDefined,
     IEnumerable <IAnnotation> annotations,
     Attributes attributes)
     : base(
         name,
         parent,
         parentScope,
         asTypeName,
         typeHint,
         false,
         false,
         accessibility,
         DeclarationType.Event,
         context,
         selection,
         isArray,
         asTypeContext,
         isUserDefined,
         annotations,
         attributes)
 {
     _parameters = new List <Declaration>();
 }
        private static ProceduralModuleDeclaration GetTestProceduralModule(Declaration projectDeclatation, string name)
        {
            var qualifiedClassModuleMemberName = new QualifiedMemberName(StubQualifiedModuleName(), name);
            var proceduralModuleDeclaration    = new ProceduralModuleDeclaration(qualifiedClassModuleMemberName, projectDeclatation, name, true, null, null);

            return(proceduralModuleDeclaration);
        }
 public ExternalProcedureDeclaration(
     QualifiedMemberName name,
     Declaration parent,
     Declaration parentScope,
     DeclarationType declarationType,
     string asTypeName,
     VBAParser.AsTypeClauseContext asTypeContext,
     Accessibility accessibility,
     ParserRuleContext context,
     ParserRuleContext attributesPassContext,
     Selection selection,
     bool isUserDefined,
     IEnumerable <IParseTreeAnnotation> annotations,
     Attributes attributes)
     : base(
         name,
         parent,
         parentScope,
         asTypeName,
         null,
         false,
         false,
         accessibility,
         declarationType,
         context,
         attributesPassContext,
         selection,
         false,
         asTypeContext,
         isUserDefined,
         annotations,
         attributes)
 {
     _parameters = new List <ParameterDeclaration>();
 }
예제 #10
0
 public ConstantDeclaration(
     QualifiedMemberName qualifiedName,
     Declaration parentDeclaration,
     string parentScope,
     string asTypeName,
     VBAParser.AsTypeClauseContext asTypeContext,
     string typeHint,
     IEnumerable <IAnnotation> annotations,
     Accessibility accessibility,
     DeclarationType declarationType,
     string value,
     ParserRuleContext context,
     Selection selection,
     bool isBuiltIn = false)
     : base(
         qualifiedName,
         parentDeclaration,
         parentScope,
         asTypeName,
         typeHint,
         true,
         false,
         accessibility,
         declarationType,
         context,
         selection,
         false,
         asTypeContext,
         isBuiltIn,
         annotations)
 {
     _expression = value;
 }
 public PropertyGetDeclaration(
     QualifiedMemberName name,
     Declaration parent,
     Declaration parentScope,
     string asTypeName,
     VBAParser.AsTypeClauseContext asTypeContext,
     string typeHint,
     Accessibility accessibility,
     ParserRuleContext context,
     ParserRuleContext attributesPassContext,
     Selection selection,
     bool isArray,
     bool isUserDefined,
     IEnumerable <IAnnotation> annotations,
     Attributes attributes)
     : base(
         name,
         parent,
         parentScope,
         asTypeName,
         asTypeContext,
         typeHint,
         accessibility,
         DeclarationType.PropertyGet,
         context,
         attributesPassContext,
         selection,
         isArray,
         isUserDefined,
         annotations,
         attributes)
 {
 }
예제 #12
0
 public ProceduralModuleDeclaration(
     QualifiedMemberName qualifiedName,
     Declaration projectDeclaration,
     string name,
     bool isUserDefined,
     IEnumerable <IAnnotation> annotations,
     Attributes attributes)
     : base(
         qualifiedName,
         projectDeclaration,
         projectDeclaration,
         name,
         null,
         false,
         false,
         Accessibility.Public,
         DeclarationType.ProceduralModule,
         null,
         Selection.Home,
         false,
         null,
         isUserDefined,
         annotations,
         attributes)
 {
 }
        public ClassModuleDeclaration(
            QualifiedMemberName qualifiedName,
            Declaration projectDeclaration,
            string name,
            bool isUserDefined,
            IEnumerable <IAnnotation> annotations,
            Attributes attributes,
            bool isWithEvents = false,
            bool hasDefaultInstanceVariable = false,
            bool isControl  = false,
            bool isDocument = false)
            : base(
                qualifiedName,
                projectDeclaration,
                name,
                isDocument ? DeclarationType.Document : DeclarationType.ClassModule,
                isUserDefined,
                annotations,
                attributes,
                isWithEvents)
        {
            _supertypeNames = new List <string>();
            _supertypes     = new HashSet <Declaration>();
            _subtypes       = new ConcurrentDictionary <Declaration, byte>();
            IsControl       = isControl;
            _isExtensible   = new Lazy <bool>(IsExtensibleToCache);
            _isExposed      = new Lazy <bool>(IsExposedToCache);

            _hasPredeclaredId = hasDefaultInstanceVariable
                ? new Lazy <bool>(() => true)
                : new Lazy <bool>(HasPredeclaredIdToCache);
        }
 public ClassModuleDeclaration(
     QualifiedMemberName qualifiedName,
     Declaration projectDeclaration,
     string name,
     bool isBuiltIn,
     IEnumerable <IAnnotation> annotations,
     Attributes attributes,
     bool isExposed = false)
     : base(
         qualifiedName,
         projectDeclaration,
         projectDeclaration,
         name,
         false,
         false,
         Accessibility.Public,
         DeclarationType.ClassModule,
         null,
         Selection.Home,
         isBuiltIn,
         annotations,
         attributes)
 {
     _isExposed = isExposed;
 }
예제 #15
0
 public ConstantDeclaration(
     QualifiedMemberName qualifiedName,
     Declaration parentDeclaration,
     string parentScope,
     string asTypeName,
     VBAParser.AsTypeClauseContext asTypeContext,
     string typeHint,
     IEnumerable <IAnnotation> annotations,
     Accessibility accessibility,
     DeclarationType declarationType,
     string value)
     : this(
         qualifiedName,
         parentDeclaration,
         parentScope,
         asTypeName,
         asTypeContext,
         typeHint,
         annotations,
         accessibility,
         declarationType,
         value,
         null,
         Selection.Home,
         true)
 {
 }
예제 #16
0
 protected ModuleDeclaration(
     QualifiedMemberName qualifiedName,
     Declaration projectDeclaration,
     string name,
     DeclarationType declarationType,
     bool isUserDefined,
     IEnumerable <IParseTreeAnnotation> annotations,
     Attributes attributes,
     bool isWithEvents = false)
     : base(
         qualifiedName,
         projectDeclaration,
         projectDeclaration,
         name,
         null,
         false,
         isWithEvents,
         Accessibility.Public,
         declarationType,
         null,
         null,
         Selection.Home,
         false,
         null,
         isUserDefined,
         annotations,
         attributes)
 {
     CustomFolder = FolderFromAnnotations();
 }
예제 #17
0
 public override void Run(QualifiedMemberName qualifiedMemberName)
 {
     // note: does not work. http://stackoverflow.com/q/31954364/1188513
     //var app = Application.GetType();
     //app.InvokeMember(qualifiedMemberName.MemberName, BindingFlags.InvokeMethod | BindingFlags.Default, null, Application, null);
     throw new NotImplementedException();
 }
예제 #18
0
 /// <summary>
 /// Creates a new built-in parameter declaration.
 /// </summary>
 public ParameterDeclaration(QualifiedMemberName qualifiedName,
                             Declaration parentDeclaration,
                             string asTypeName,
                             VBAParser.AsTypeClauseContext asTypeContext,
                             string typeHint,
                             bool isOptional,
                             bool isByRef,
                             bool isArray        = false,
                             bool isParamArray   = false,
                             string defaultValue = "")
     : base(
         qualifiedName,
         parentDeclaration,
         parentDeclaration,
         asTypeName,
         typeHint,
         false,
         false,
         Accessibility.Implicit,
         DeclarationType.Parameter,
         null,
         null,
         Selection.Home,
         isArray,
         asTypeContext,
         false)
 {
     IsOptional      = isOptional;
     IsByRef         = isByRef;
     IsImplicitByRef = false;
     IsParamArray    = isParamArray;
     DefaultValue    = defaultValue;
 }
 public ExternalProcedureDeclaration(
     QualifiedMemberName name,
     Declaration parent,
     Declaration parentScope,
     DeclarationType declarationType,
     string asTypeName,
     VBAParser.AsTypeClauseContext asTypeContext,
     Accessibility accessibility,
     ParserRuleContext context,
     Selection selection,
     bool isBuiltIn,
     IEnumerable <IAnnotation> annotations)
     : base(
         name,
         parent,
         parentScope,
         asTypeName,
         null,
         false,
         false,
         accessibility,
         declarationType,
         context,
         selection,
         false,
         asTypeContext,
         isBuiltIn,
         annotations,
         null)
 {
     _parameters = new List <Declaration>();
 }
예제 #20
0
 public ProjectDeclaration(
     QualifiedMemberName qualifiedName,
     string name,
     bool isUserDefined,
     IVBProject project)
     : base(
         qualifiedName,
         null,
         (Declaration)null,
         name,
         null,
         false,
         false,
         Accessibility.Implicit,
         DeclarationType.Project,
         null,
         null,
         Selection.Home,
         false,
         null,
         isUserDefined)
 {
     _project           = project;
     _projectReferences = new List <ProjectReference>();
 }
예제 #21
0
 public ValuedDeclaration(QualifiedMemberName qualifiedName, string parentScope,
                          string asTypeName, Accessibility accessibility, DeclarationType declarationType, string value,
                          ParserRuleContext context, Selection selection, bool isBuiltIn = false)
     : base(qualifiedName, parentScope, asTypeName, true, false, accessibility, declarationType, context, selection, isBuiltIn)
 {
     _value = value;
 }
예제 #22
0
 /// <summary>
 /// Creates a new user declaration for a parameter.
 /// </summary>
 public ParameterDeclaration(QualifiedMemberName qualifiedName,
                             Declaration parentDeclaration,
                             ParserRuleContext context,
                             Selection selection,
                             string asTypeName,
                             VBAParser.AsTypeClauseContext asTypeContext,
                             string typeHint,
                             bool isOptional,
                             bool isByRef,
                             bool isArray      = false,
                             bool isParamArray = false,
                             bool isBuiltIn    = false)
     : base(
         qualifiedName,
         parentDeclaration,
         parentDeclaration,
         asTypeName,
         typeHint,
         false,
         false,
         Accessibility.Implicit,
         DeclarationType.Parameter,
         context,
         selection,
         isArray,
         asTypeContext,
         isBuiltIn)
 {
     _isOptional      = isOptional;
     _isByRef         = isByRef;
     _isImplicitByRef = isByRef && (context == null || ((VBAParser.ArgContext)context).BYREF() == null);
     IsParamArray     = isParamArray;
 }
예제 #23
0
        public void ExpressionReturnsTheContructorInjectedValue()
        {
            var value               = "testtest";
            var constantName        = new QualifiedMemberName(StubQualifiedModuleName(), "testConstant");
            var constantDeclaration = new ConstantDeclaration(constantName, null, "test", "test", null, "test", null, Accessibility.Implicit, DeclarationType.Constant, value, null, Selection.Home, false);

            Assert.AreEqual <string>(value, constantDeclaration.Expression);
        }
예제 #24
0
        public override void Run(QualifiedMemberName qualifiedMemberName)
        {
            object[] paramArray = { }; //PowerPoint requires a paramarray, so we pass it an empty array.

            var call = GenerateMethodCall(qualifiedMemberName);

            Application.Run(call, ref paramArray);
        }
 public ParameterNotUsedInspectionResult(string inspection, CodeInspectionSeverity type,
                                         ParserRuleContext context, QualifiedMemberName qualifiedName, bool isInterfaceImplementation, RemoveParametersRefactoring quickFixRefactoring, VBProjectParseResult parseResult)
     : base(inspection, type, qualifiedName.QualifiedModuleName, context)
 {
     _isInterfaceImplementation = isInterfaceImplementation;
     _quickFixRefactoring       = quickFixRefactoring;
     _parseResult = parseResult;
 }
 public FunctionReturnValueNotUsedInspectionResult(
     IInspection inspection,
     ParserRuleContext context,
     QualifiedMemberName qualifiedName,
     Declaration target)
     : this(inspection, context, qualifiedName, new List <Tuple <ParserRuleContext, QualifiedSelection, Declaration> >(), target)
 {
 }
예제 #27
0
        public TimeSpan TimedMethodCall(QualifiedMemberName qualifiedMemberName)
        {
            var stopwatch = Stopwatch.StartNew();

            Run(qualifiedMemberName);

            stopwatch.Stop();
            return(stopwatch.Elapsed);
        }
 public FunctionReturnValueNotUsedInspectionResult(
     IInspection inspection,
     ParserRuleContext context,
     QualifiedMemberName qualifiedName,
     IEnumerable <string> returnStatements,
     Declaration target)
     : this(inspection, context, qualifiedName, returnStatements, new List <Tuple <ParserRuleContext, QualifiedSelection, IEnumerable <string> > >(), target)
 {
 }
예제 #29
0
        public TimeSpan TimedMethodCall(QualifiedMemberName qualifiedMemberName)
        {
            var stopwatch = Stopwatch.StartNew();

            Run(qualifiedMemberName);

            stopwatch.Stop();
            return stopwatch.Elapsed;
        }
예제 #30
0
        private string GenerateMethodCall(QualifiedMemberName qualifiedMemberName)
        {
            //Access only supports Project.Procedure syntax. Error occurs if there are naming conflicts.
            // http://msdn.microsoft.com/en-us/library/office/ff193559(v=office.15).aspx
            // https://github.com/retailcoder/Rubberduck/issues/109

            var projectName = qualifiedMemberName.QualifiedModuleName.ProjectName;

            return($"{projectName}.{qualifiedMemberName.MemberName}");
        }
예제 #31
0
        //Function RunMacro(ModuleName As String, MacroName As String, Parameter() As Variant) As Variant
        //Where ModuleName appears to mean ProjectName, and MacroName has to be provided as "ModuleName.ProcName"

        //TODO:RunMacro can only execute methods in stand-alone projects (not document hosted projects)
        //TODO:Can only get a CorelDraw application if at least one document is open in CorelDraw.

        public override void Run(QualifiedMemberName qualifiedMemberName)
        {
            var projectName = qualifiedMemberName.QualifiedModuleName.ProjectId;
            var memberName  = qualifiedMemberName.QualifiedModuleName.ComponentName + "." + qualifiedMemberName.MemberName;

            if (Application != null)
            {
                Application.GMSManager.RunMacro(projectName, memberName, new object[] {});
            }
        }
예제 #32
0
        public void Run(QualifiedMemberName qualifiedMemberName)
        {
            var component = qualifiedMemberName.QualifiedModuleName.Component;
            var line = component.CodeModule.get_ProcBodyLine(qualifiedMemberName.MemberName, vbext_ProcKind.vbext_pk_Proc);

            component.CodeModule.CodePane.SetSelection(line, 1, line, 1);
            component.CodeModule.CodePane.ForceFocus();

            _runButton.Execute();
            // note: this can't work... because the .Execute() call isn't blocking, so method returns before test method actually runs.
        }
예제 #33
0
 internal void ImplementedBy(QualifiedMemberName name)
 {
     if (implementors == null)
         implementors = new Seq<QualifiedMemberName>();
     implementors.Add(name);
 }
예제 #34
0
 public bool ExtraUsedMethod(QualifiedMemberName name)
 {
     var assemblyDef = default(AssemblyDef);
     var typeDef = default(TypeDef);
     var memberDef = default(MemberDef);
     if (name.PrimTryResolve(Global, out assemblyDef, out typeDef, out memberDef))
         return memberDef.MarkAsUsed(this, assemblyDef, typeDef);
     return false;
 }
예제 #35
0
 internal void MustHaveADefinition(QualifiedMemberName name)
 {
     if (mustHaveADefinitionCache == null)
          mustHaveADefinitionCache = new Set<QualifiedMemberName>();
     mustHaveADefinitionCache.Add(name);
 }
예제 #36
0
 public bool IsMustHaveADefinition(QualifiedMemberName name)
 {
     return mustHaveADefinitionCache == null ? false : mustHaveADefinitionCache.Contains(name);
 }
예제 #37
0
 internal void UsedBy(QualifiedMemberName name)
 {
     if (usedByMembers == null)
         usedByMembers = new Set<QualifiedMemberName>();
     usedByMembers.Add(name);
 }
예제 #38
0
 public InvalidMemberName(MessageContext ctxt, QualifiedMemberName name, string message)
     : base(ctxt, Severity.Warning, "1021")
 {
     Name = name;
     Message = message;
 }