static public BindingContext CreateInstance( CSemanticChecker pSemanticChecker, ExprFactory exprFactory, OutputContext outputContext, NameGenerator nameGenerator, bool bflushLocalVariableTypesForEachStatement, bool bAllowUnsafeBlocks, bool bIsOptimizingSwitchAndArrayInit, bool bShowReachability, bool bWrapNonExceptionThrows, bool bInRefactoring, KAID aidLookupContext ) { return new BindingContext( pSemanticChecker, exprFactory, outputContext, nameGenerator, bflushLocalVariableTypesForEachStatement, bAllowUnsafeBlocks, bIsOptimizingSwitchAndArrayInit, bShowReachability, bWrapNonExceptionThrows, bInRefactoring, aidLookupContext); }
protected BindingContext( CSemanticChecker pSemanticChecker, ExprFactory exprFactory, OutputContext outputContext, NameGenerator nameGenerator, bool bflushLocalVariableTypesForEachStatement, bool bAllowUnsafeBlocks, bool bIsOptimizingSwitchAndArrayInit, bool bShowReachability, bool bWrapNonExceptionThrows, bool bInRefactoring, KAID aidLookupContext ) { m_ExprFactory = exprFactory; m_outputContext = outputContext; m_pNameGenerator = nameGenerator; m_pInputFile = null; m_pParentDecl = null; m_pContainingAgg = null; m_pCurrentSwitchType = null; m_pOriginalConstantField = null; m_pCurrentFieldSymbol = null; m_pImplicitlyTypedLocal = null; m_pOuterScope = null; m_pFinallyScope = null; m_pTryScope = null; m_pCatchScope = null; m_pCurrentScope = null; m_pSwitchScope = null; m_pCurrentBlock = null; m_UnsafeState = UNSAFESTATES.UNSAFESTATES_Unknown; m_FinallyNestingCount = 0; m_bInsideTryOfCatch = false; m_bInFieldInitializer = false; m_bInBaseConstructorCall = false; m_bAllowUnsafeBlocks = bAllowUnsafeBlocks; m_bIsOptimizingSwitchAndArrayInit = bIsOptimizingSwitchAndArrayInit; m_bShowReachability = bShowReachability; m_bWrapNonExceptionThrows = bWrapNonExceptionThrows; m_bInRefactoring = bInRefactoring; m_bInAttribute = false; m_bRespectSemanticsAndReportErrors = true; m_bflushLocalVariableTypesForEachStatement = bflushLocalVariableTypesForEachStatement; m_ppamis = null; m_pamiCurrent = null; m_pInitType = null; m_returnErrorSink = null; Debug.Assert(pSemanticChecker != null); this.SemanticChecker = pSemanticChecker; this.SymbolLoader = SemanticChecker.GetSymbolLoader(); m_outputContext.m_pThisPointer = null; m_outputContext.m_pCurrentMethodSymbol = null; m_aidExternAliasLookupContext = aidLookupContext; CheckedNormal = false; CheckedConstant = false; }
private void Reset() { _controller = new RuntimeBinderController(); _semanticChecker = new LangCompiler(_controller, new NameManager()); BSYMMGR bsymmgr = _semanticChecker.getBSymmgr(); NameManager nameManager = _semanticChecker.GetNameManager(); InputFile infile = bsymmgr.GetMiscSymFactory().CreateMDInfile(nameManager.Lookup(""), (mdToken)0); infile.SetAssemblyID(bsymmgr.AidAlloc(infile)); infile.AddToAlias(KAID.kaidThisAssembly); infile.AddToAlias(KAID.kaidGlobal); _symbolTable = new SymbolTable( bsymmgr.GetSymbolTable(), bsymmgr.GetSymFactory(), nameManager, _semanticChecker.GetTypeManager(), bsymmgr, _semanticChecker, infile); _semanticChecker.getPredefTypes().Init(_semanticChecker.GetErrorContext(), _symbolTable); _semanticChecker.GetTypeManager().InitTypeFactory(_symbolTable); SymbolLoader.getPredefinedMembers().RuntimeBinderSymbolTable = _symbolTable; SymbolLoader.SetSymbolTable(_symbolTable); _exprFactory = new ExprFactory(_semanticChecker.GetSymbolLoader().GetGlobalSymbolContext()); _outputContext = new OutputContext(); _nameGenerator = new NameGenerator(); _bindingContext = BindingContext.CreateInstance( _semanticChecker, _exprFactory, _outputContext, _nameGenerator, false, true, false, false, false, false, 0); _binder = new ExpressionBinder(_bindingContext); }