public void LiveVariableAnalysis_StaticLocalFunction_ExpressionNotLiveIn() { var context = new LiveVariableAnalysisContext( @"static int LocalFunction(int a) => 42; outParameter = LocalFunction(0);" , "LocalFunction"); var liveIn = context.LVA.GetLiveIn(context.CFG.EntryBlock).OfType <IParameterSymbol>().ToArray(); liveIn.Should().BeEmpty(); }
public void LiveVariableAnalysis_StaticLocalFunction_ExpressionLiveIn() { var context = new LiveVariableAnalysisContext( @"static int LocalFunction(int a) => a + 1; outParameter = LocalFunction(inParameter);" , "LocalFunction"); var liveIn = context.LVA.GetLiveIn(context.CFG.EntryBlock).OfType <IParameterSymbol>().ToArray(); liveIn.Should().HaveCount(1); liveIn.Single().Name.Should().Be("a"); }
public void LiveVariableAnalysis_StaticLocalFunction_Recursive() { var context = new LiveVariableAnalysisContext( @"static int LocalFunction(int a) { if(a <= 0) return 0; else return LocalFunction(a - 1); }; outParameter = LocalFunction(inParameter);" , "LocalFunction"); var liveIn = context.LVA.GetLiveIn(context.CFG.EntryBlock).OfType <IParameterSymbol>().ToArray(); liveIn.Should().HaveCount(1); liveIn.Single().Name.Should().Be("a"); }