コード例 #1
0
        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);
                }
            }
        }
コード例 #2
0
        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);
            }
        }
コード例 #3
0
        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);
                }
            }
        }
コード例 #4
0
 public override bool VisitVariableWriter(VariableWriter variableWriter)
 {
     if (variableWriter.IsUnsafe)
     {
         NeedGeneration = true;
     }
     return(!NeedGeneration);
 }
コード例 #5
0
 public override bool VisitVariableWriter(VariableWriter variableWriter)
 {
     if (variableWriter.IsUnsafe)
     {
         NeedGeneration = true;
         return(false);
     }
     //TODO analyse variables written
     return(true);
 }
コード例 #6
0
		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));
		}
コード例 #7
0
        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);
            }
        }
コード例 #8
0
 public override bool VisitVariableWriter(VariableWriter variableWriter)
 {
     WriteTypeConsistencyChecker.OnNode(variableWriter, CurrentNode);
     return(true);
 }
コード例 #9
0
 public virtual bool VisitVariableWriter(VariableWriter variableWriter)
 {
     return(true);
 }