예제 #1
0
        public void Add(IMethodSymbol symbol, Task task)
        {
            var existent = tasksByName.Find(task.FullName);

            if (existent != null)
            {
                throw DuplicateTaskException.Create(existent, task);
            }

            tasksBySymbol.Add(symbol, task);
            tasksByName.Add(task.FullName, task);
        }
예제 #2
0
        public void Add(IMethodSymbol symbol, Task task)
        {
            var existent = tasksByName.Find(task.FullName);

            if (existent != null)
            {
                throw DuplicateTaskException.Create(existent, task);
            }

            var method = (MethodDeclarationSyntax)symbol.DeclaringSyntaxReferences.First().GetSyntax();

            tasksBySyntax.Add(method, task);
            tasksBySymbol.Add(symbol, task);

            tasksByName.Add(task.FullName, task);
        }
예제 #3
0
        public override void VisitMethodDeclaration(MethodDeclarationSyntax node)
        {
            var isTask = IsTask(node);
            var isStep = IsStep(node);

            if (!isTask && !isStep)
            {
                return;
            }

            var task = new TaskDeclaration(string.Join(".", scope.Reverse()), node, isStep);

            if (tasks.ContainsKey(task.FullName))
            {
                throw DuplicateTaskException.Create(tasks[task.FullName], task);
            }

            tasks.Add(task.FullName, task);
        }