public override void VisitTaskDefinition(TaskDefinitionSyntax taskDefinitionSyntax) { var identifier = taskDefinitionSyntax.Identifier; var location = identifier.GetLocation(); if(location == null) { return; } var taskName = identifier.ToString(); var taskDeclaration = _taskDeklarations.TryFindSymbol(taskName); if(taskDeclaration.Location != location) { taskDeclaration = null; } _taskDefinition = new TaskDefinitionSymbol(taskName, location, taskDefinitionSyntax, taskDeclaration); // Declarations foreach(var nodeDeclarationSyntax in taskDefinitionSyntax.NodeDeclarationBlock?.NodeDeclarations ?? Enumerable.Empty<NodeDeclarationSyntax>()) { Visit(nodeDeclarationSyntax); } // Transitions foreach (var transitionDefinitionSyntax in taskDefinitionSyntax.TransitionDefinitionBlock?.TransitionDefinitions ?? Enumerable.Empty<TransitionDefinitionSyntax>()) { Visit(transitionDefinitionSyntax); } // ExitTransitions foreach (var transitionDefinitionSyntax in taskDefinitionSyntax.TransitionDefinitionBlock?.ExitTransitionDefinitions ?? Enumerable.Empty<ExitTransitionDefinitionSyntax>()) { Visit(transitionDefinitionSyntax); } VerifyTaskDefinition(); }
internal ExitTransition(ExitTransitionDefinitionSyntax syntax, TaskDefinitionSymbol taskDefinition, [CanBeNull] NodeReferenceSymbol source, [CanBeNull] ConnectionPointReferenceSymbol connectionPoint, [CanBeNull] EdgeModeSymbol edgeMode, [CanBeNull] NodeReferenceSymbol target) { if (syntax == null) { throw new ArgumentNullException(nameof(syntax)); } if (taskDefinition == null) { throw new ArgumentNullException(nameof(taskDefinition)); } Syntax = syntax; TaskDefinition = taskDefinition; Source = source; ConnectionPoint = connectionPoint; EdgeMode = edgeMode; Target = target; if(connectionPoint != null) { connectionPoint.ExitTransition = this; } }
public TaskDefinitionBuilderResult(TaskDefinitionSymbol taskDefinition, IReadOnlyList<Diagnostic> diagnostics) { TaskDefinition = taskDefinition; Diagnostics = diagnostics ?? new List<Diagnostic>(); }