public bool VisitDropNode(DropNode dropNode) { VariableUsageValidator validator = dropNode.Terminals[0].GetValidator(); validator.TestVariableIsOwnedType(); return(true); }
public bool VisitExplicitBorrowNode(ExplicitBorrowNode explicitBorrowNode) { foreach (var inputTerminal in explicitBorrowNode.InputTerminals) { VariableUsageValidator validator = inputTerminal.GetValidator(); } return(true); }
public bool TestSameUnderlyingTypeAs(VariableUsageValidator other) { if (!_terminalHasType) { return(false); } NIType otherUnderlyingType = other._facadeVariable.Type.GetTypeOrReferentType(); return(TestExpectedUnderlyingType(otherUnderlyingType)); }
public bool VisitTerminateLifetimeNode(TerminateLifetimeNode terminateLifetimeNode) { foreach (var inputTerminal in terminateLifetimeNode.InputTerminals) { VariableUsageValidator validator = new VariableUsageValidator(inputTerminal, false); } switch (terminateLifetimeNode.ErrorState) { case TerminateLifetimeErrorState.InputLifetimesNotUnique: terminateLifetimeNode.SetDfirMessage(Messages.TerminateLifetimeInputLifetimesNotUnique); break; case TerminateLifetimeErrorState.InputLifetimeCannotBeTerminated: terminateLifetimeNode.SetDfirMessage(Messages.TerminateLifetimeInputLifetimeCannotBeTerminated); break; case TerminateLifetimeErrorState.NotAllVariablesInLifetimeConnected: terminateLifetimeNode.SetDfirMessage(Messages.TerminateLifetimeNotAllVariablesInLifetimeConnected); break; } return(true); }