Example #1
0
        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();
        }
Example #2
0
        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");
        }
Example #3
0
        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");
        }