public static void OnNode([NotNull] Node node) { VariableWriter variableWriter = node as VariableWriter; if (variableWriter == null) { return; //not our job } var element = node.CodeElement as VariableWriter; if (element?.VariablesWritten != null) { foreach (var pair in element.VariablesWritten) { if (pair.Key == null) { continue; // no receiving item } var receiving = node.GetDataDefinitionFromStorageAreaDictionary(pair.Key); if (receiving == null) { continue; // ambiguity or not referenced; not my job } checkReadOnly(node, receiving); } } }
public void OnNode([NotNull] Node node, ParserRuleContext context, [NotNull] CodeModel.Program program) { VariableWriter variableWriter = node as VariableWriter; if (variableWriter == null) { return; //not our job } var element = node.CodeElement as VariableWriter; var table = program.SymbolTable; foreach (var pair in element.VariablesWritten) { if (pair.Key == null) { continue; // no receiving item } var lr = table.GetVariable(pair.Key); if (lr.Count != 1) { continue; // ambiguity or not referenced; not my job } var receiving = lr[0]; checkReadOnly(node.CodeElement, receiving); } }
public static void OnNode([NotNull] Node node) { VariableWriter variableWriter = node as VariableWriter; if (variableWriter == null) { return; //not our job } var element = node.CodeElement as VariableWriter; var table = node.SymbolTable; if (element?.VariablesWritten != null) { foreach (var pair in element.VariablesWritten) { if (pair.Key == null) { continue; // no receiving item } var lr = table.GetVariables(pair.Key); if (lr.Count() != 1) { continue; // ambiguity or not referenced; not my job } var receiving = lr.First(); checkReadOnly(node, receiving); } } }
public override bool VisitVariableWriter(VariableWriter variableWriter) { if (variableWriter.IsUnsafe) { NeedGeneration = true; } return(!NeedGeneration); }
public override bool VisitVariableWriter(VariableWriter variableWriter) { if (variableWriter.IsUnsafe) { NeedGeneration = true; return(false); } //TODO analyse variables written return(true); }
public void NumberLineTest() { VariableWriter variableWriter = new VariableWriter(); NumberedTextWriter numberedTextWriter = new NumberedTextWriter(variableWriter); string text = "Hello world!"; int currentLine = numberedTextWriter.LineNumber; numberedTextWriter.WriteLine(text); Assert.AreEqual(variableWriter.Value, String.Format("{0}: {1}", currentLine, text)); }
public static void OnNode(VariableWriter variableWriter, Node node) { if (variableWriter == null) { return; //not our job } var variables = variableWriter.VariablesWritten; foreach (var variable in variables) { CheckVariable(node, variable.Key, variable.Value); } }
public override bool VisitVariableWriter(VariableWriter variableWriter) { WriteTypeConsistencyChecker.OnNode(variableWriter, CurrentNode); return(true); }
public virtual bool VisitVariableWriter(VariableWriter variableWriter) { return(true); }