예제 #1
0
 public IForwardDataFlowAnalysis <VariableFlags> BeginAnalysis(
     IExecutableDeclaration declaration,
     ISymbolTree symbolTree,
     Diagnostics diagnostics)
 {
     return(new DefiniteAssignmentAnalysis(declaration, symbolTree, diagnostics));
 }
        public VariableFlags(IExecutableDeclaration declaration, ISymbolTree symbolTree, bool defaultValue)
        {
            var invocableSymbol = declaration.Symbol;

            symbolMap = symbolTree.Children(invocableSymbol).Cast <BindingSymbol>().Enumerate().ToFixedDictionary();
            flags     = new BitArray(symbolMap.Count, defaultValue);
        }
예제 #3
0
 public IBackwardDataFlowAnalysis <VariableFlags> BeginAnalysis(
     IExecutableDeclaration declaration,
     ISymbolTree symbolTree,
     Diagnostics _)
 {
     return(new LivenessAnalysis(declaration, symbolTree));
 }
예제 #4
0
 public IForwardDataFlowAnalysis <VariableFlags> BeginAnalysis(
     IExecutableDeclaration declaration,
     ISymbolTree symbolTree,
     Diagnostics diagnostics)
 {
     return(new UseOfMovedValueAnalysis(declaration, symbolTree, diagnostics));
 }
 public BindingMutabilityAnalysis(IExecutableDeclaration declaration, ISymbolTree symbolTree, Diagnostics diagnostics)
 {
     this.declaration = declaration;
     this.symbolTree  = symbolTree;
     file             = declaration.File;
     this.diagnostics = diagnostics;
 }
예제 #6
0
 public IForwardDataFlowAnalysis <VariableFlags> BeginAnalysis(
     IExecutableDeclaration declaration,
     ISymbolTree symbolTree,
     Diagnostics diagnostics)
 {
     return(new BindingMutabilityAnalysis(declaration, symbolTree, diagnostics));
 }
 private ReachabilityAnalyzer(
     IExecutableDeclaration declaration,
     ISymbolTree symbolTree,
     Diagnostics diagnostics)
 {
     this.declaration = declaration;
     this.symbolTree  = symbolTree;
     file             = declaration.File;
     this.diagnostics = diagnostics;
 }
 public UseOfMovedValueAnalysis(
     IExecutableDeclaration declaration,
     ISymbolTree symbolTree,
     Diagnostics diagnostics)
 {
     this.declaration = declaration;
     this.symbolTree  = symbolTree;
     file             = declaration.File;
     this.diagnostics = diagnostics;
 }
 public DefiniteAssignmentAnalysis(
     IExecutableDeclaration declaration,
     ISymbolTree symbolTree,
     Diagnostics diagnostics)
 {
     this.declaration = declaration;
     this.symbolTree  = symbolTree;
     this.file        = declaration.File;
     this.diagnostics = diagnostics;
 }
예제 #10
0
 public LivenessAnalysis(IExecutableDeclaration declaration, ISymbolTree symbolTree)
 {
     this.declaration = declaration;
     this.symbolTree  = symbolTree;
 }
예제 #11
0
 public void Check(IExecutableDeclaration syntax)
 {
     Walk(syntax, false);
 }