public DbgEngineExpressionEvaluatorImpl(DbgModuleReferenceProvider dbgModuleReferenceProvider, DbgDotNetExpressionCompiler expressionCompiler, DbgDotNetILInterpreter dnILInterpreter, IPredefinedEvaluationErrorMessagesHelper predefinedEvaluationErrorMessagesHelper) { this.dbgModuleReferenceProvider = dbgModuleReferenceProvider ?? throw new ArgumentNullException(nameof(dbgModuleReferenceProvider)); this.expressionCompiler = expressionCompiler ?? throw new ArgumentNullException(nameof(expressionCompiler)); this.dnILInterpreter = dnILInterpreter ?? throw new ArgumentNullException(nameof(dnILInterpreter)); this.predefinedEvaluationErrorMessagesHelper = predefinedEvaluationErrorMessagesHelper ?? throw new ArgumentNullException(nameof(predefinedEvaluationErrorMessagesHelper)); }
DbgDotNetLanguageServiceImpl(Lazy <DbgMethodDebugInfoProvider> dbgMethodDebugInfoProvider, Lazy <DbgModuleReferenceProvider> dbgModuleReferenceProvider, Lazy <DbgDotNetEngineValueNodeFactoryService> dbgDotNetEngineValueNodeFactoryService, Lazy <DbgDotNetILInterpreter> dnILInterpreter, Lazy <DbgAliasProvider> dbgAliasProvider, [ImportMany] IEnumerable <Lazy <DbgDotNetExpressionCompiler, IDbgDotNetExpressionCompilerMetadata> > dbgDotNetExpressionCompilers, IDecompilerService decompilerService, IPredefinedEvaluationErrorMessagesHelper predefinedEvaluationErrorMessagesHelper, [ImportMany] IEnumerable <Lazy <DbgDotNetFormatter, IDbgDotNetFormatterMetadata> > dbgDotNetFormatters) { this.dbgMethodDebugInfoProvider = dbgMethodDebugInfoProvider; this.dbgModuleReferenceProvider = dbgModuleReferenceProvider; this.dbgDotNetEngineValueNodeFactoryService = dbgDotNetEngineValueNodeFactoryService; this.dnILInterpreter = dnILInterpreter; this.dbgAliasProvider = dbgAliasProvider; this.decompilerService = decompilerService; this.predefinedEvaluationErrorMessagesHelper = predefinedEvaluationErrorMessagesHelper; var eeList = new List <Lazy <DbgDotNetExpressionCompiler, IDbgDotNetExpressionCompilerMetadata> >(); var langGuids = new HashSet <Guid>(); foreach (var lz in dbgDotNetExpressionCompilers.OrderBy(a => a.Metadata.Order)) { if (!Guid.TryParse(lz.Metadata.LanguageGuid, out var languageGuid)) { Debug.Fail($"Couldn't parse language GUID: '{lz.Metadata.LanguageGuid}'"); continue; } if (!Guid.TryParse(lz.Metadata.DecompilerGuid, out _)) { Debug.Fail($"Couldn't parse decompiler GUID: '{lz.Metadata.DecompilerGuid}'"); continue; } if (langGuids.Add(languageGuid)) { eeList.Add(lz); } } this.dbgDotNetExpressionCompilers = eeList.ToArray(); formattersDict = new Dictionary <Guid, Lazy <DbgDotNetFormatter, IDbgDotNetFormatterMetadata> >(); foreach (var lz in dbgDotNetFormatters.OrderBy(a => a.Metadata.Order)) { if (!Guid.TryParse(lz.Metadata.LanguageGuid, out var languageGuid)) { Debug.Fail($"Couldn't parse language GUID: '{lz.Metadata.LanguageGuid}'"); continue; } if (!formattersDict.ContainsKey(languageGuid)) { formattersDict.Add(languageGuid, lz); } } }
DbgDotNetEngineValueNodeFactoryServiceImpl(IPredefinedEvaluationErrorMessagesHelper errorMessagesHelper, [ImportMany] IEnumerable <Lazy <DbgDotNetValueNodeFactory, IDbgDotNetValueNodeFactoryMetadata> > factories) { this.errorMessagesHelper = errorMessagesHelper; toLazyFactory = new Dictionary <Guid, Lazy <DbgDotNetValueNodeFactory, IDbgDotNetValueNodeFactoryMetadata> >(); toFactory = new Dictionary <Lazy <DbgDotNetValueNodeFactory, IDbgDotNetValueNodeFactoryMetadata>, DbgDotNetEngineValueNodeFactory>(); foreach (var lz in factories.OrderBy(a => a.Metadata.Order)) { bool b = Guid.TryParse(lz.Metadata.LanguageGuid, out var languageGuid); Debug.Assert(b); if (!b) { continue; } if (!toLazyFactory.ContainsKey(languageGuid)) { toLazyFactory.Add(languageGuid, lz); } } }
public DbgEngineLanguageImpl(DbgModuleReferenceProvider dbgModuleReferenceProvider, string name, string displayName, DbgDotNetExpressionCompiler expressionCompiler, DbgMethodDebugInfoProvider dbgMethodDebugInfoProvider, IDecompiler decompiler, DbgDotNetFormatter formatter, DbgDotNetEngineValueNodeFactory valueNodeFactory, DbgDotNetILInterpreter dnILInterpreter, DbgAliasProvider dbgAliasProvider, IPredefinedEvaluationErrorMessagesHelper predefinedEvaluationErrorMessagesHelper) { if (dbgModuleReferenceProvider == null) { throw new ArgumentNullException(nameof(dbgModuleReferenceProvider)); } if (formatter == null) { throw new ArgumentNullException(nameof(formatter)); } if (valueNodeFactory == null) { throw new ArgumentNullException(nameof(valueNodeFactory)); } if (dnILInterpreter == null) { throw new ArgumentNullException(nameof(dnILInterpreter)); } if (dbgAliasProvider == null) { throw new ArgumentNullException(nameof(dbgAliasProvider)); } if (predefinedEvaluationErrorMessagesHelper == null) { throw new ArgumentNullException(nameof(predefinedEvaluationErrorMessagesHelper)); } Name = name ?? throw new ArgumentNullException(nameof(name)); DisplayName = displayName ?? throw new ArgumentNullException(nameof(displayName)); this.dbgMethodDebugInfoProvider = dbgMethodDebugInfoProvider ?? throw new ArgumentNullException(nameof(dbgMethodDebugInfoProvider)); this.expressionCompiler = expressionCompiler ?? throw new ArgumentNullException(nameof(expressionCompiler)); this.decompiler = decompiler ?? throw new ArgumentNullException(nameof(decompiler)); var expressionEvaluator = new DbgEngineExpressionEvaluatorImpl(dbgModuleReferenceProvider, expressionCompiler, dnILInterpreter, dbgAliasProvider, predefinedEvaluationErrorMessagesHelper); ExpressionEvaluator = expressionEvaluator; Formatter = new DbgEngineFormatterImpl(formatter); LocalsProvider = new DbgEngineLocalsProviderImpl(dbgModuleReferenceProvider, expressionCompiler, valueNodeFactory, dnILInterpreter, dbgAliasProvider); AutosProvider = new DbgEngineAutosProviderImpl(valueNodeFactory); ExceptionsProvider = new DbgEngineExceptionsProviderImpl(valueNodeFactory); ReturnValuesProvider = new DbgEngineReturnValuesProviderImpl(valueNodeFactory); TypeVariablesProvider = new DbgEngineTypeVariablesProviderImpl(valueNodeFactory); ValueNodeFactory = new DbgEngineValueNodeFactoryImpl(expressionEvaluator, valueNodeFactory, formatter); debuggerDisplayAttributeEvaluator = expressionEvaluator; }
public DbgDotNetEngineValueNodeFactoryImpl(DbgDotNetFormatter formatter, DbgDotNetValueNodeFactory factory, IPredefinedEvaluationErrorMessagesHelper errorMessagesHelper) { this.formatter = formatter ?? throw new ArgumentNullException(nameof(formatter)); this.factory = factory ?? throw new ArgumentNullException(nameof(factory)); ErrorMessagesHelper = errorMessagesHelper ?? throw new ArgumentNullException(nameof(errorMessagesHelper)); }