├── .BuildProject
├── .gitattributes
├── .gitignore
├── Apache-2.0.licenseheader
├── Build-OneClick.cmd
├── Build.cmd
├── Build
├── Build.csproj
├── Build.licenseheader
├── Customizations
│ ├── Configuration.props
│ ├── Local
│ │ ├── Configuration.props
│ │ └── Configuration.targets
│ ├── Overrides.targets
│ ├── Projects.props
│ ├── Properties.props
│ ├── ReleaseProcessScript.config
│ ├── Server
│ │ └── Configuration.targets
│ └── Version.props
├── How-to-Release.md
├── Remotion.Local.build
├── Remotion.Server.build
├── Remotion.build
├── app.config
├── packages.config
└── teamcity.properties
├── Core.UnitTests
├── App_Packages
│ ├── Remotion.Development.BooleanObjectMother.Sources.1.25.23
│ │ ├── BooleanObjectMother.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Development.Dev.Sources.1.15.33.0
│ │ ├── Dev.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Development.EnumerableExtensions.Sources.1.17.6.0
│ │ ├── EnumerableExtensions.cs
│ │ ├── OneTimeEnumerable.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Development.Moq.Decoration.Sources.1.21.8
│ │ ├── DecoratorTestHelper.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Development.NormalizingMemberInfoFromExpressionUtility.Sources.1.17.6.0
│ │ ├── Apache-2.0.licenseheader
│ │ └── NMIFRUtility.cs
│ ├── Remotion.Development.ObjectExtensions.Sources.1.17.6.0
│ │ ├── ObjectExtensions.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Development.PrivateInvoke.Sources.1.17.6.0
│ │ ├── PrivateInvoke.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Development.ReflectionObjectMother.Sources.1.17.6.0
│ │ ├── ReflectionObjectMother.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.FunctionalProgramming.EnumerableExtensions.Sources.1.17.6.0
│ │ ├── EnumerableExtensions.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.FunctionalProgramming.EnumerableUtility.Sources.1.17.6.0
│ │ ├── EnumerableUtility.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.JetBrains.Annotations.Sources.1.15.23.0
│ │ ├── AssertionConditionAttribute.cs
│ │ ├── AssertionConditionType.cs
│ │ ├── AssertionMethodAttribute.cs
│ │ ├── BaseTypeRequiredAttribute.cs
│ │ ├── CanBeNullAttribute.cs
│ │ ├── CannotApplyEqualityOperatorAttribute.cs
│ │ ├── ContractAnnotationAttribute.cs
│ │ ├── ImplicitUseKindFlags.cs
│ │ ├── ImplicitUseTargetFlags.cs
│ │ ├── InstantHandleAttribute.cs
│ │ ├── InvokerParameterNameAttribute.cs
│ │ ├── LinqTunnelAttribute.cs
│ │ ├── LocalizationRequiredAttribute.cs
│ │ ├── MeansImplicitUseAttribute.cs
│ │ ├── NoEnumerationAttribute.cs
│ │ ├── NotNullAttribute.cs
│ │ ├── NotifyPropertyChangedInvocatorAttribute.cs
│ │ ├── PathReferenceAttribute.cs
│ │ ├── PublicAPIAttribute.cs
│ │ ├── PureAttribute.cs
│ │ ├── ReSharperAnnotations Apache-2.0.licenseheader
│ │ ├── StringFormatMethodAttribute.cs
│ │ ├── TerminatesProgramAttribute.cs
│ │ └── UsedImplicitlyAttribute.cs
│ ├── Remotion.Utilities.ArgumentUtility.Sources.1.15.23.0
│ │ ├── ArgumentUtility.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Utilities.Assertion.Sources.1.15.23.0
│ │ ├── Assertion.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Utilities.ExceptionUtility.Sources.1.15.23.0
│ │ ├── ExceptionUtility.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Utilities.FileUtility.Sources.1.15.33.0
│ │ ├── FileUtility.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Utilities.MemberInfoEqualityComparer.Sources.1.17.6.0
│ │ ├── MemberInfoEqualityComparer.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ └── Remotion.Utilities.NullableTypeUtility.Sources.1.15.23.0
│ │ ├── NullableTypeUtility.cs
│ │ └── SharedSource Apache-2.0.licenseheader
├── Caching
│ ├── AssembledTypeIDTest.cs
│ ├── ConstructionKeyTest.cs
│ ├── ConstructorCallCacheTest.cs
│ ├── ConstructorForAssembledTypeCacheKeyTest.cs
│ ├── ConstructorForAssembledTypeCacheTest.cs
│ └── TypeCacheTests
│ │ ├── GetOrCreateAdditionalType_TypeCacheTest.cs
│ │ ├── GetOrCreateType_TypeCacheTest.cs
│ │ └── LoadTypes_TypeCacheTest.cs
├── CodeGeneration
│ ├── AssembledTypeIdentifierProviderTest.cs
│ ├── AssemblyContextPoolTest.cs
│ ├── AssemblyContextTest.cs
│ ├── MutableTypeBatchCodeGeneratorTest.cs
│ ├── ReflectionEmit
│ │ ├── Abstractions
│ │ │ ├── BuilderAdapterBaseTest.cs
│ │ │ ├── BuilderDecoratorBaseTest.cs
│ │ │ ├── ConstructorBuilderDecoratorTest.cs
│ │ │ ├── EventBuilderDecoratorTest.cs
│ │ │ ├── FieldBuilderDecoratorTest.cs
│ │ │ ├── GenericTypeParameterBuilderDecoratorTest.cs
│ │ │ ├── MethodBaseBuilderDecoratorBaseTest.cs
│ │ │ ├── MethodBuilderDecoratorTest.cs
│ │ │ ├── PropertyBuilderDecoratorTest.cs
│ │ │ └── TypeBuilderDecoratorTest.cs
│ │ ├── CodeGenerationContextObjectMother.cs
│ │ ├── CodeGenerationContextTest.cs
│ │ ├── DeferredActionManagerTest.cs
│ │ ├── EmittableOperandProviderTest.cs
│ │ ├── Expressions
│ │ │ ├── BoxAndCastExpressionTest.cs
│ │ │ ├── CodeGenerationExpressionBaseTest.cs
│ │ │ ├── UnaryExpressionBaseTest.cs
│ │ │ ├── UnboxExpressionTest.cs
│ │ │ └── UnemittableExpressionVisitorTest.cs
│ │ ├── InitializationBuilderTest.cs
│ │ ├── LambdaCompilation
│ │ │ ├── CodeGenerationExpressionEmitterTest.cs
│ │ │ ├── DelegateTypePlaceholderTest.cs
│ │ │ ├── ILGeneratorDecoratorFactoryTest.cs
│ │ │ ├── ILGeneratorDecoratorTest.cs
│ │ │ ├── ILGeneratorObjectMother.cs
│ │ │ └── OffsetTrackingILGeneratorFactoryTest.cs
│ │ ├── MemberEmitterFactoryTest.cs
│ │ ├── MemberEmitterTest.cs
│ │ ├── MethodTrampolineProviderTest.cs
│ │ ├── ModuleBuilderFactoryTest.cs
│ │ ├── MutableNestedTypeCodeGeneratorTest.cs
│ │ ├── MutableTypeCodeGeneratorFactoryTest.cs
│ │ ├── MutableTypeCodeGeneratorTest.cs
│ │ ├── OtherKey.snk
│ │ ├── ReflectionEmitObjectMother.cs
│ │ └── StrongNameCheckingEmittableOperandProviderDecoratorTest.cs
│ └── ThreadLocalAssemblyContextPoolDecoratorTest.cs
├── Core.UnitTests.csproj
├── Core.UnitTests.csproj.DotSettings
├── Expressions
│ ├── DelegateBasedExpressionVisitorTest.cs
│ ├── ExpressionExtensionsTest.cs
│ ├── ExpressionTest.cs
│ ├── ExpressionTestHelper.cs
│ ├── ExpressionTreeComparer.cs
│ ├── NewDelegateExpressionTest.cs
│ ├── PrimitiveTypePipeExpressionBaseTest.cs
│ ├── ReflectionAdapters
│ │ ├── ConstructorAsMethodInfoAdapterTest.cs
│ │ └── NonVirtualCallMethodInfoAdapterTest.cs
│ ├── ReplacingExpressionVisitorTest.cs
│ └── ThisExpressionTest.cs
├── Implementation
│ ├── CodeManagerTest.cs
│ ├── ConstructorFinderTest.cs
│ ├── DefaultPipelineRegistryTest.cs
│ ├── DynamicParamListTest.cs
│ ├── ParamListImplementationTest.cs
│ ├── ParamListTest.cs
│ ├── PipelineRegistryTest.cs
│ ├── PipelineSettingsTest.cs
│ ├── PipelineTest.cs
│ ├── ReflectionServiceTest.cs
│ └── TestDomain
│ │ └── ClassWithManyConstructorArguments.cs
├── Moq
│ └── MoqExtensions.cs
├── MutableReflection
│ ├── BodyBuilding
│ │ ├── BodyContextBaseTest.cs
│ │ ├── BodyContextUtilityTest.cs
│ │ ├── BodyProviderUtilityTest.cs
│ │ ├── ConstructorBodyContextBaseTest.cs
│ │ ├── ConstructorBodyModificationContextTest.cs
│ │ ├── ExpressionTypeUtilityTest.cs
│ │ ├── MethodBaseBodyContextBaseTest.cs
│ │ ├── MethodBodyContextBaseObjectMother.cs
│ │ ├── MethodBodyContextBaseTest.cs
│ │ ├── MethodBodyModificationContextTest.cs
│ │ ├── TestableBodyContextBase.cs
│ │ ├── TestableConstructorBodyContextBase.cs
│ │ ├── TestableMethodBaseBodyContextBase.cs
│ │ └── TestableMethodBodyContextBase.cs
│ ├── CustomAttributeDataExtensionsTest.cs
│ ├── CustomAttributeDeclarationTest.cs
│ ├── CustomAttributeNamedArgumentAdapterTest.cs
│ ├── GenericParameterDeclarationTest.cs
│ ├── Generics
│ │ ├── ConstructorOnTypeInstantiationTest.cs
│ │ ├── EventOnTypeInstantiationTest.cs
│ │ ├── FieldOnTypeInstantiationTest.cs
│ │ ├── GenericParameterDefaultConstructorTest.cs
│ │ ├── MemberParameterOnInstantiationTest.cs
│ │ ├── MethodInstantiationInfoTest.cs
│ │ ├── MethodInstantiationObjectMother.cs
│ │ ├── MethodInstantiationTest.cs
│ │ ├── MethodOnTypeInstantiationTest.cs
│ │ ├── MutableGenericParameterTest.cs
│ │ ├── PropertyOnTypeInstantiationTest.cs
│ │ ├── TypeInstantiationContextTest.cs
│ │ ├── TypeInstantiationInfoTest.cs
│ │ └── TypeInstantiationTest.cs
│ ├── Implementation
│ │ ├── ArrayTypeBaseTest.cs
│ │ ├── BindingFlagsEvaluatorTest.cs
│ │ ├── ByRefTypeTest.cs
│ │ ├── ConstructorOnCustomTypeTest.cs
│ │ ├── CustomAttributeContainerTest.cs
│ │ ├── CustomAttributeDataAdapterTest.cs
│ │ ├── CustomAttributeDataCacheKeyTest.cs
│ │ ├── CustomAttributeDataRetrieverTest.cs
│ │ ├── CustomAttributeFinderTest.cs
│ │ ├── CustomAttributeTypedArgumentUtilityTest.cs
│ │ ├── CustomConstructorInfoTest.cs
│ │ ├── CustomEventInfoTest.cs
│ │ ├── CustomFieldInfoTest.cs
│ │ ├── CustomMethodInfoTest.cs
│ │ ├── CustomParameterInfoTest.cs
│ │ ├── CustomPropertyInfoTest.cs
│ │ ├── CustomTypeTest.cs
│ │ ├── EnumFlagsExtensionsTest.cs
│ │ ├── GenericArgumentUtilityTest.cs
│ │ ├── InstanceInitializationTest.cs
│ │ ├── InterfaceMappingComputerTest.cs
│ │ ├── MemberFactory
│ │ │ ├── ConstructorFactoryTest.cs
│ │ │ ├── EventFactoryTest.cs
│ │ │ ├── FieldFactoryTest.cs
│ │ │ ├── InitializationFactoryTest.cs
│ │ │ ├── MethodFactoryTest.cs
│ │ │ ├── MethodOverrideFactoryTest.cs
│ │ │ ├── NestedTypeFactoryTest.cs
│ │ │ └── PropertyFactoryTest.cs
│ │ ├── MemberImplementationUtilityTest.cs
│ │ ├── MemberSelectorTest.cs
│ │ ├── MethodBaseDefinitionCacheTest.cs
│ │ ├── MethodOnCustomTypeTest.cs
│ │ ├── MethodOverrideUtilityTest.cs
│ │ ├── MultiDimensionalArrayTypeTest.cs
│ │ ├── MutableTypeFactoryTest.cs
│ │ ├── ParameterOnCustomMemberTest.cs
│ │ ├── PropertyParameterInfoWrapperTest.cs
│ │ ├── ProviderUtilityTest.cs
│ │ ├── ProxyTypeModificationTrackerTest.cs
│ │ ├── RelatedEventFinderTest.cs
│ │ ├── RelatedMethodFinderTest.cs
│ │ ├── RelatedPropertyFinderTest.cs
│ │ ├── SignatureDebugStringGeneratorTest.cs
│ │ ├── SubclassFilterUtilityTest.cs
│ │ └── VectorTypeTest.cs
│ ├── MemberSignatures
│ │ ├── EventSignatureTest.cs
│ │ ├── FieldSignatureTest.cs
│ │ ├── MemberNameAndSignatureEqualityComparerTest.cs
│ │ ├── MemberSignatureEqualityComparerTest.cs
│ │ ├── MemberSignatureProviderTest.cs
│ │ ├── MethodSignatureIntegrationTest.cs
│ │ ├── MethodSignatureStringBuilderHelperForGenericMethodTest.cs
│ │ ├── MethodSignatureStringBuilderHelperTest.cs
│ │ ├── MethodSignatureTest.cs
│ │ ├── NestedTypeSignatureTest.cs
│ │ ├── PropertySignatureTest.cs
│ │ └── TestDomain
│ │ │ ├── ClassForSignatureComparisons.cs
│ │ │ └── ClassForSignatureComparisons2.cs
│ ├── MethodAttributesExtensionsTest.cs
│ ├── MethodDeclarationTest.cs
│ ├── MethodInfoExtensionsTest.cs
│ ├── MutableConstructorInfoTest.cs
│ ├── MutableConstructorInfoTestHelper.cs
│ ├── MutableEventInfoTest.cs
│ ├── MutableFieldInfoTest.cs
│ ├── MutableFieldInfoTestHelper.cs
│ ├── MutableMethodInfoTest.cs
│ ├── MutableMethodInfoTestHelper.cs
│ ├── MutableParameterInfoTest.cs
│ ├── MutablePropertyInfoTest.cs
│ ├── MutableTypeTest.cs
│ ├── MutableTypeTestExtensions.cs
│ ├── NamedArgumentDeclarationTest.cs
│ ├── ParameterDeclarationTest.cs
│ ├── TypeExtensionsTest.cs
│ ├── TypePipeCustomAttributeDataWithInheritanceTest.cs
│ └── UnsupportedMemberTestHelper.cs
├── NUnit
│ └── NUnitExtensions.cs
├── Properties
│ └── AssemblyInfo.cs
├── StrongNaming
│ ├── AssemblyAnalyzerTest.cs
│ └── TypeAnalyzerTest.cs
└── TypeAssembly
│ ├── GeneratedTypesContextTest.cs
│ ├── Implementation
│ ├── ConstructorDelegateFactoryTest.cs
│ ├── DependentTypeSorterTest.cs
│ ├── NullTypeIdentifierProviderTest.cs
│ ├── TypeAssemblerTest.cs
│ ├── TypeAssemblyContextBaseTest.cs
│ └── TypeAssemblyResultTest.cs
│ ├── LoadedTypesContextTest.cs
│ ├── ParticipantStateTest.cs
│ └── TypeAssemblyContextExtensionsTest.cs
├── Core
├── App_Packages
│ ├── Remotion.FunctionalProgramming.EnumerableExtensions.Sources.1.17.6.0
│ │ ├── EnumerableExtensions.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.FunctionalProgramming.EnumerableUtility.Sources.1.17.6.0
│ │ ├── EnumerableUtility.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.JetBrains.Annotations.Sources.1.15.23.0
│ │ ├── AssertionConditionAttribute.cs
│ │ ├── AssertionConditionType.cs
│ │ ├── AssertionMethodAttribute.cs
│ │ ├── BaseTypeRequiredAttribute.cs
│ │ ├── CanBeNullAttribute.cs
│ │ ├── CannotApplyEqualityOperatorAttribute.cs
│ │ ├── ContractAnnotationAttribute.cs
│ │ ├── ImplicitUseKindFlags.cs
│ │ ├── ImplicitUseTargetFlags.cs
│ │ ├── InstantHandleAttribute.cs
│ │ ├── InvokerParameterNameAttribute.cs
│ │ ├── LinqTunnelAttribute.cs
│ │ ├── LocalizationRequiredAttribute.cs
│ │ ├── MeansImplicitUseAttribute.cs
│ │ ├── NoEnumerationAttribute.cs
│ │ ├── NotNullAttribute.cs
│ │ ├── NotifyPropertyChangedInvocatorAttribute.cs
│ │ ├── PathReferenceAttribute.cs
│ │ ├── PublicAPIAttribute.cs
│ │ ├── PureAttribute.cs
│ │ ├── ReSharperAnnotations Apache-2.0.licenseheader
│ │ ├── StringFormatMethodAttribute.cs
│ │ ├── TerminatesProgramAttribute.cs
│ │ └── UsedImplicitlyAttribute.cs
│ ├── Remotion.Utilities.ArgumentUtility.Sources.1.15.23.0
│ │ ├── ArgumentUtility.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Utilities.Assertion.Sources.1.15.23.0
│ │ ├── Assertion.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Utilities.AttributeUtility.Sources.1.17.6.0
│ │ ├── AttributeUtility.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Utilities.EqualityUtility.Sources.1.15.23.0
│ │ ├── EqualityUtility.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Utilities.ExceptionUtility.Sources.1.15.23.0
│ │ ├── ExceptionUtility.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Utilities.MemberInfoEqualityComparer.Sources.1.17.6.0
│ │ ├── MemberInfoEqualityComparer.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Utilities.MemberInfoFromExpressionUtility.Sources.1.17.6.0
│ │ ├── MemberInfoFromExpressionUtility.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ └── Remotion.Utilities.NullableTypeUtility.Sources.1.15.23.0
│ │ ├── NullableTypeUtility.cs
│ │ └── SharedSource Apache-2.0.licenseheader
├── Caching
│ ├── AssembledTypeID.cs
│ ├── ConstructionKey.cs
│ ├── ConstructorCallCache.cs
│ ├── ConstructorForAssembledTypeCache.cs
│ ├── ConstructorForAssembledTypeCacheKey.cs
│ ├── IConstructorCallCache.cs
│ ├── IConstructorForAssembledTypeCache.cs
│ ├── ITypeCache.cs
│ ├── ITypeIdentifierProvider.cs
│ └── TypeCache.cs
├── CodeGeneration
│ ├── AssemblyContext.cs
│ ├── AssemblyContextPool.cs
│ ├── ConstructorDelegateFactory.cs
│ ├── DependentTypeSorter.cs
│ ├── IAssemblyContextPool.cs
│ ├── IConstructorDelegateFactory.cs
│ ├── IDependentTypeSorter.cs
│ ├── IGeneratedCodeFlusher.cs
│ ├── IMutableTypeBatchCodeGenerator.cs
│ ├── IMutableTypeCodeGenerator.cs
│ ├── IMutableTypeCodeGeneratorFactory.cs
│ ├── MutableTypeBatchCodeGenerator.cs
│ ├── ReflectionEmit
│ │ ├── Abstractions
│ │ │ ├── AssemblyBuilderAdapter.cs
│ │ │ ├── BuilderAdapterBase.cs
│ │ │ ├── BuilderDecoratorBase.cs
│ │ │ ├── ConstructorBuilderAdapter.cs
│ │ │ ├── ConstructorBuilderDecorator.cs
│ │ │ ├── EventBuilderAdapter.cs
│ │ │ ├── EventBuilderDecorator.cs
│ │ │ ├── FieldBuilderAdapter.cs
│ │ │ ├── FieldBuilderDecorator.cs
│ │ │ ├── GenericTypeParameterBuilderAdapter.cs
│ │ │ ├── GenericTypeParameterBuilderDecorator.cs
│ │ │ ├── IAssemblyBuilder.cs
│ │ │ ├── IConstructorBuilder.cs
│ │ │ ├── ICustomAttributeTargetBuilder.cs
│ │ │ ├── IEventBuilder.cs
│ │ │ ├── IFieldBuilder.cs
│ │ │ ├── IGenericTypeParameterBuilder.cs
│ │ │ ├── IMethodBaseBuilder.cs
│ │ │ ├── IMethodBuilder.cs
│ │ │ ├── IModuleBuilder.cs
│ │ │ ├── IParameterBuilder.cs
│ │ │ ├── IPropertyBuilder.cs
│ │ │ ├── ITypeBuilder.cs
│ │ │ ├── MethodBaseBuilderDecoratorBase.cs
│ │ │ ├── MethodBuilderAdapter.cs
│ │ │ ├── MethodBuilderDecorator.cs
│ │ │ ├── ModuleBuilderAdapter.cs
│ │ │ ├── ParameterBuilderAdapter.cs
│ │ │ ├── ParameterBuilderDecorator.cs
│ │ │ ├── PropertyBuilderAdapter.cs
│ │ │ ├── PropertyBuilderDecorator.cs
│ │ │ ├── TypeBuilderAdapter.cs
│ │ │ └── TypeBuilderDecorator.cs
│ │ ├── CodeGenerationContext.cs
│ │ ├── DeferredActionManager.cs
│ │ ├── EmittableOperandProvider.cs
│ │ ├── ExpressionPreparer.cs
│ │ ├── Expressions
│ │ │ ├── BoxAndCastExpression.cs
│ │ │ ├── CodeGenerationExpressionBase.cs
│ │ │ ├── ICodeGenerationExpression.cs
│ │ │ ├── ICodeGenerationExpressionVisitor.cs
│ │ │ ├── UnaryExpressionBase.cs
│ │ │ ├── UnboxExpression.cs
│ │ │ └── UnemittableExpressionVisitor.cs
│ │ ├── IDelegateProvider.cs
│ │ ├── IEmittableOperandProvider.cs
│ │ ├── IExpressionPreparer.cs
│ │ ├── IInitializationBuilder.cs
│ │ ├── IMemberEmitter.cs
│ │ ├── IMemberEmitterFactory.cs
│ │ ├── IMethodTrampolineProvider.cs
│ │ ├── IModuleBuilderFactory.cs
│ │ ├── IMutableNestedTypeCodeGeneratorFactory.cs
│ │ ├── IReflectionEmitCodeGenerator.cs
│ │ ├── InitializationBuilder.cs
│ │ ├── LambdaCompilation
│ │ │ ├── CodeGenerationExpressionEmitter.cs
│ │ │ ├── ConstructorBuilderForLambdaCompiler.cs
│ │ │ ├── DelegateProvider.cs
│ │ │ ├── DelegateTypePlaceholder.cs
│ │ │ ├── IILGenerator.cs
│ │ │ ├── IILGeneratorFactory.cs
│ │ │ ├── ILGeneratorDecorator.cs
│ │ │ ├── ILGeneratorDecoratorFactory.cs
│ │ │ ├── IMethodBuilderForLambdaCompiler.cs
│ │ │ ├── MethodBuilderForLambdaCompiler.cs
│ │ │ ├── OffsetTrackingILGeneratorAdapter.cs
│ │ │ └── OffsetTrackingILGeneratorFactory.cs
│ │ ├── MemberEmitter.cs
│ │ ├── MemberEmitterFactory.cs
│ │ ├── MethodTrampolineProvider.cs
│ │ ├── ModuleBuilderFactory.cs
│ │ ├── MutableNestedTypeCodeGenerator.cs
│ │ ├── MutableNestedTypeCodeGeneratorFactory.cs
│ │ ├── MutableTypeCodeGenerator.cs
│ │ ├── MutableTypeCodeGeneratorFactory.cs
│ │ ├── NullDebugInfoGenerator.cs
│ │ ├── NullExpressionPreparer.cs
│ │ ├── ReflectionEmitCodeGenerator.cs
│ │ └── StrongNameCheckingEmittableOperandProviderDecorator.cs
│ └── ThreadLocalAssemblyContextPoolDecorator.cs
├── Core.csproj
├── Dlr
│ ├── Actions
│ │ ├── BinaryOperationBinder.cs
│ │ ├── BindingRestrictions.cs
│ │ ├── CallInfo.cs
│ │ ├── CallSite.cs
│ │ ├── CallSiteBinder.cs
│ │ ├── CallSiteHelpers.cs
│ │ ├── CallSiteOps.cs
│ │ ├── ConvertBinder.cs
│ │ ├── CreateInstanceBinder.cs
│ │ ├── DeleteIndexBinder.cs
│ │ ├── DeleteMemberBinder.cs
│ │ ├── DynamicMetaObject.cs
│ │ ├── DynamicMetaObjectBinder.cs
│ │ ├── DynamicObject.cs
│ │ ├── ExpandoClass.cs
│ │ ├── ExpandoObject.cs
│ │ ├── GetIndexBinder.cs
│ │ ├── GetMemberBinder.cs
│ │ ├── IDynamicMetaObjectProvider.cs
│ │ ├── IInvokeOnGetBinder.cs
│ │ ├── InvokeBinder.cs
│ │ ├── InvokeMemberBinder.cs
│ │ ├── RuleCache.cs
│ │ ├── SetIndexBinder.cs
│ │ ├── SetMemberBinder.cs
│ │ ├── UnaryOperationBinder.cs
│ │ └── UpdateDelegates.Generated.cs
│ ├── Ast
│ │ ├── BinaryExpression.cs
│ │ ├── BlockExpression.cs
│ │ ├── CatchBlock.cs
│ │ ├── ConditionalExpression.cs
│ │ ├── ConstantExpression.cs
│ │ ├── DebugInfoExpression.cs
│ │ ├── DebugViewWriter.cs
│ │ ├── DefaultExpression.cs
│ │ ├── DynamicExpression.cs
│ │ ├── ElementInit.cs
│ │ ├── Expression.DebuggerProxy.cs
│ │ ├── Expression.cs
│ │ ├── ExpressionStringBuilder.cs
│ │ ├── ExpressionType.cs
│ │ ├── ExpressionVisitor.cs
│ │ ├── GotoExpression.cs
│ │ ├── IArgumentProvider.cs
│ │ ├── IndexExpression.cs
│ │ ├── InvocationExpression.cs
│ │ ├── LabelExpression.cs
│ │ ├── LabelTarget.cs
│ │ ├── LambdaExpression.TypePipe.cs
│ │ ├── LambdaExpression.cs
│ │ ├── ListArgumentProvider.cs
│ │ ├── ListInitExpression.cs
│ │ ├── LoopExpression.cs
│ │ ├── MemberAssignment.cs
│ │ ├── MemberBinding.cs
│ │ ├── MemberExpression.cs
│ │ ├── MemberInitExpression.cs
│ │ ├── MemberListBinding.cs
│ │ ├── MemberMemberBinding.cs
│ │ ├── MethodCallExpression.cs
│ │ ├── NewArrayExpression.cs
│ │ ├── NewExpression.cs
│ │ ├── ParameterExpression.cs
│ │ ├── RuntimeVariablesExpression.cs
│ │ ├── SwitchCase.cs
│ │ ├── SwitchExpression.cs
│ │ ├── SymbolDocumentInfo.cs
│ │ ├── TryExpression.cs
│ │ ├── TypeBinaryExpression.cs
│ │ ├── TypeUtils.cs
│ │ └── UnaryExpression.cs
│ ├── Compiler
│ │ ├── AnalyzedTree.cs
│ │ ├── AssemblyGen.cs
│ │ ├── BoundConstants.cs
│ │ ├── Closure.cs
│ │ ├── CompilerScope.Storage.cs
│ │ ├── CompilerScope.cs
│ │ ├── ConstantCheck.cs
│ │ ├── DebugInfoGenerator.cs
│ │ ├── DelegateHelpers.Generated.cs
│ │ ├── DelegateHelpers.cs
│ │ ├── ExpressionQuoter.cs
│ │ ├── HoistedLocals.cs
│ │ ├── ILGen.cs
│ │ ├── KeyedQueue.cs
│ │ ├── LabelInfo.cs
│ │ ├── LambdaCompiler.Address.cs
│ │ ├── LambdaCompiler.Binary.cs
│ │ ├── LambdaCompiler.ControlFlow.cs
│ │ ├── LambdaCompiler.Expressions.cs
│ │ ├── LambdaCompiler.Generated.cs
│ │ ├── LambdaCompiler.Lambda.cs
│ │ ├── LambdaCompiler.Logical.cs
│ │ ├── LambdaCompiler.Statements.cs
│ │ ├── LambdaCompiler.Unary.cs
│ │ ├── LambdaCompiler.cs
│ │ ├── OffsetTrackingILGenerator.cs
│ │ ├── RuntimeVariableList.cs
│ │ ├── Set.cs
│ │ ├── StackSpiller.Bindings.cs
│ │ ├── StackSpiller.Generated.cs
│ │ ├── StackSpiller.Temps.cs
│ │ ├── StackSpiller.cs
│ │ ├── SymbolDocumentGenerator.cs
│ │ └── VariableBinder.cs
│ ├── Preserve-Dlr.licenseheader
│ └── Utils
│ │ ├── Action.cs
│ │ ├── CacheDict.cs
│ │ ├── CollectionExtensions.cs
│ │ ├── ContractUtils.cs
│ │ ├── ExceptionFactory.Generated.cs
│ │ ├── Function.cs
│ │ ├── Helpers.cs
│ │ ├── IRuntimeVariables.cs
│ │ ├── ReadOnlyCollectionBuilder.cs
│ │ ├── ReadOnlyDictionary.cs
│ │ ├── ReferenceEqualityComparer.cs
│ │ ├── TrueReadOnlyCollection.cs
│ │ └── TypeExtensions.cs
├── Expressions
│ ├── DelegateBasedExpressionVisitor.cs
│ ├── Expression.cs
│ ├── ExpressionExtensions.cs
│ ├── IPrimitiveTypePipeExpression.cs
│ ├── IPrimitiveTypePipeExpressionVisitor.cs
│ ├── NewDelegateExpression.cs
│ ├── PrimitiveTypePipeExpressionBase.cs
│ ├── ReflectionAdapters
│ │ ├── ConstructorAsMethodInfoAdapter.cs
│ │ ├── DelegatingMethodInfoBase.cs
│ │ └── NonVirtualCallMethodInfoAdapter.cs
│ ├── ReplacingExpressionVisitor.cs
│ └── ThisExpression.cs
├── IParticipant.cs
├── IPipeline.cs
├── IPipelineFactory.cs
├── IPipelineRegistry.cs
├── Implementation
│ ├── CodeManager.cs
│ ├── ConstructorFinder.cs
│ ├── DefaultPipelineFactory.cs
│ ├── DefaultPipelineRegistry.cs
│ ├── DynamicParamList.cs
│ ├── ICodeManager.cs
│ ├── IConstructorFinder.cs
│ ├── IInitializableObject.cs
│ ├── IReflectionService.cs
│ ├── InitializationSemantics.cs
│ ├── ParamListImplementation.cs
│ ├── ParamListImplementation.tt
│ ├── Pipeline.cs
│ ├── ReflectionService.cs
│ ├── StandardDelegates.cs
│ └── TypePipeAssemblyAttribute.cs
├── MutableReflection
│ ├── BodyBuilding
│ │ ├── BodyContextBase.cs
│ │ ├── BodyContextUtility.cs
│ │ ├── BodyProviderUtility.cs
│ │ ├── ConstructorBodyContextBase.cs
│ │ ├── ConstructorBodyCreationContext.cs
│ │ ├── ConstructorBodyModificationContext.cs
│ │ ├── ExpressionTypeUtility.cs
│ │ ├── InitializationBodyContext.cs
│ │ ├── MethodBaseBodyContextBase.cs
│ │ ├── MethodBodyContextBase.cs
│ │ ├── MethodBodyCreationContext.cs
│ │ └── MethodBodyModificationContext.cs
│ ├── BodyChangedEventArgs.cs
│ ├── CustomAttributeDataExtensions.cs
│ ├── CustomAttributeDeclaration.cs
│ ├── ExplicitBaseDefinitionsAddedEventArgs.cs
│ ├── GenericParameterContext.cs
│ ├── GenericParameterDeclaration.cs
│ ├── Generics
│ │ ├── ConstructorOnTypeInstantiation.cs
│ │ ├── EventOnTypeInstantiation.cs
│ │ ├── FieldOnTypeInstantiation.cs
│ │ ├── GenericParameterDefaultConstructor.cs
│ │ ├── MemberParameterOnInstantiation.cs
│ │ ├── MethodInstantiation.cs
│ │ ├── MethodInstantiationInfo.cs
│ │ ├── MethodOnTypeInstantiation.cs
│ │ ├── MutableGenericParameter.cs
│ │ ├── PropertyOnTypeInstantiation.cs
│ │ ├── TypeInstantiation.cs
│ │ ├── TypeInstantiationContext.cs
│ │ └── TypeInstantiationInfo.cs
│ ├── ICustomAttributeData.cs
│ ├── ICustomAttributeDataProvider.cs
│ ├── ICustomAttributeNamedArgument.cs
│ ├── IMutableInfo.cs
│ ├── IMutableMember.cs
│ ├── IMutableMethodBase.cs
│ ├── Implementation
│ │ ├── ArrayTypeBase.cs
│ │ ├── BindingFlagsEvaluator.cs
│ │ ├── ByRefType.cs
│ │ ├── ConstructorOnCustomType.cs
│ │ ├── CustomAttributeContainer.cs
│ │ ├── CustomAttributeDataAdapter.cs
│ │ ├── CustomAttributeDataCacheKey.cs
│ │ ├── CustomAttributeDataRetriever.cs
│ │ ├── CustomAttributeFinder.cs
│ │ ├── CustomAttributeNamedArgumentAdapter.cs
│ │ ├── CustomAttributeTypedArgumentUtility.cs
│ │ ├── CustomConstructorInfo.cs
│ │ ├── CustomEventInfo.cs
│ │ ├── CustomFieldInfo.cs
│ │ ├── CustomMethodInfo.cs
│ │ ├── CustomParameterInfo.cs
│ │ ├── CustomPropertyInfo.cs
│ │ ├── CustomType.cs
│ │ ├── EnumFlagsExtensions.cs
│ │ ├── GenericArgumentUtility.cs
│ │ ├── IBindingFlagsEvaluator.cs
│ │ ├── ICustomAttributeDataRetriever.cs
│ │ ├── IInterfaceMappingComputer.cs
│ │ ├── IMemberSelector.cs
│ │ ├── IMutableTypeFactory.cs
│ │ ├── IOwnCustomAttributeDataProvider.cs
│ │ ├── IRelatedEventFinder.cs
│ │ ├── IRelatedMethodFinder.cs
│ │ ├── IRelatedPropertyFinder.cs
│ │ ├── ITypeModificationTracker.cs
│ │ ├── InstanceInitialization.cs
│ │ ├── InterfaceMappingComputer.cs
│ │ ├── MemberFactory
│ │ │ ├── ConstructorFactory.cs
│ │ │ ├── EventFactory.cs
│ │ │ ├── FieldFactory.cs
│ │ │ ├── IMethodFactory.cs
│ │ │ ├── IMutableMemberFactory.cs
│ │ │ ├── InitializationFactory.cs
│ │ │ ├── MemberAttributesUtility.cs
│ │ │ ├── MethodFactory.cs
│ │ │ ├── MethodOverrideFactory.cs
│ │ │ ├── MutableMemberFactory.cs
│ │ │ ├── NestedTypeFactory.cs
│ │ │ └── PropertyFactory.cs
│ │ ├── MemberImplementationUtility.cs
│ │ ├── MemberSelector.cs
│ │ ├── MethodAttributesExtensions.cs
│ │ ├── MethodBaseDefinitionCache.cs
│ │ ├── MethodOnCustomType.cs
│ │ ├── MethodOverrideUtility.cs
│ │ ├── MultiDimensionalArrayType.cs
│ │ ├── MutableTypeFactory.cs
│ │ ├── ParameterOnCustomMember.cs
│ │ ├── PropertyParameterInfoWrapper.cs
│ │ ├── ProviderUtility.cs
│ │ ├── ProxyKind.cs
│ │ ├── ProxyTypeModificationTracker.cs
│ │ ├── RelatedEventFinder.cs
│ │ ├── RelatedMethodFinder.cs
│ │ ├── RelatedPropertyFinder.cs
│ │ ├── SignatureDebugStringGenerator.cs
│ │ ├── SubclassFilterUtility.cs
│ │ └── VectorType.cs
│ ├── MemberSignatures
│ │ ├── EventSignature.cs
│ │ ├── FieldSignature.cs
│ │ ├── IMemberSignature.cs
│ │ ├── IMethodSignatureStringBuilderHelper.cs
│ │ ├── MemberNameAndSignatureEqualityComparer.cs
│ │ ├── MemberSignatureEqualityComparer.cs
│ │ ├── MemberSignatureProvider.cs
│ │ ├── MethodSignature.cs
│ │ ├── MethodSignatureStringBuilderHelper.cs
│ │ ├── MethodSignatureStringBuilderHelperForGenericMethod.cs
│ │ ├── NestedTypeSignature.cs
│ │ └── PropertySignature.cs
│ ├── MethodDeclaration.cs
│ ├── MethodInfoExtensions.cs
│ ├── MutableConstructorInfo.cs
│ ├── MutableEventInfo.cs
│ ├── MutableFieldInfo.cs
│ ├── MutableMethodInfo.cs
│ ├── MutableParameterInfo.cs
│ ├── MutablePropertyInfo.cs
│ ├── MutableType.cs
│ ├── MutableTypeExtensions.cs
│ ├── NamedArgumentDeclaration.cs
│ ├── ParameterDeclaration.cs
│ ├── TypeExtensions.cs
│ └── TypePipeCustomAttributeData.cs
├── ParamList.Partial.cs
├── ParamList.cs
├── ParamList.tt
├── PipelineFactoryExtensions.cs
├── PipelineRegistry.cs
├── PipelineSettings.cs
├── Properties
│ └── AssemblyInfo.cs
├── SimpleParticipantBase.cs
├── StrongNaming
│ ├── AssemblyAnalyzer.cs
│ ├── FallbackKey.cs
│ ├── FallbackKey.snk
│ ├── IAssemblyAnalyzer.cs
│ ├── ITypeAnalyzer.cs
│ └── TypeAnalyzer.cs
├── TypeAssembly
│ ├── GeneratedTypesContext.cs
│ ├── IAdditionalTypeAssemblyContext.cs
│ ├── IParticipantState.cs
│ ├── IProxyTypeAssemblyContext.cs
│ ├── ITypeAssemblyContext.cs
│ ├── Implementation
│ │ ├── AdditionalTypeAssemblyContext.cs
│ │ ├── AssembledTypeAttribute.cs
│ │ ├── AssembledTypeIdentifierProvider.cs
│ │ ├── IAssembledTypeIdentifierProvider.cs
│ │ ├── ITypeAssembler.cs
│ │ ├── NullTypeIdentifierProvider.cs
│ │ ├── ProxyTypeAssemblyContext.cs
│ │ ├── TypeAssembler.cs
│ │ ├── TypeAssemblyContextBase.cs
│ │ └── TypeAssemblyResult.cs
│ ├── LoadedProxy.cs
│ ├── LoadedTypesContext.cs
│ ├── ParticipantState.cs
│ └── TypeAssemblyContextExtensions.cs
└── doc
│ └── include
│ ├── GettingStartedWithTypePipe.aml
│ └── Remotion.TypePipe.NamespaceDoc.xml
├── Development
├── App_Packages
│ ├── Remotion.Development.NormalizingMemberInfoFromExpressionUtility.Sources.1.17.6.0
│ │ ├── Apache-2.0.licenseheader
│ │ └── NMIFRUtility.cs
│ ├── Remotion.Development.PEVerifier.Sources.1.17.10.0
│ │ ├── PEVerifier.cs
│ │ ├── PEVerifyException.cs
│ │ ├── PEVerifyPathSources
│ │ │ ├── CompoundPEVerifyPathSource.cs
│ │ │ ├── DotNetSdk20PEVerifyPathSource.cs
│ │ │ ├── FixedPEVerifyPathSource.cs
│ │ │ ├── IPEVerifyPathSource.cs
│ │ │ ├── PEVerifyVersion.cs
│ │ │ ├── PotentialPEVerifyPathSourceBase.cs
│ │ │ ├── WindowsSdk6PEVerifyPathSource.cs
│ │ │ ├── WindowsSdk70aPEVerifyPathSource.cs
│ │ │ ├── WindowsSdk71PEVerifyPathSource.cs
│ │ │ ├── WindowsSdk80aPEVerifyPathSource.cs
│ │ │ └── WindowsSdk81aPEVerifyPathSource.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Development.PrivateInvoke.Sources.1.17.6.0
│ │ ├── PrivateInvoke.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Development.ReflectionObjectMother.Sources.1.17.6.0
│ │ ├── ReflectionObjectMother.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.FunctionalProgramming.EnumerableExtensions.Sources.1.17.6.0
│ │ ├── EnumerableExtensions.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.FunctionalProgramming.EnumerableUtility.Sources.1.17.6.0
│ │ ├── EnumerableUtility.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.FunctionalProgramming.Maybe.Sources.1.17.6.0
│ │ ├── Maybe.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.JetBrains.Annotations.Sources.1.15.23.0
│ │ ├── AssertionConditionAttribute.cs
│ │ ├── AssertionConditionType.cs
│ │ ├── AssertionMethodAttribute.cs
│ │ ├── BaseTypeRequiredAttribute.cs
│ │ ├── CanBeNullAttribute.cs
│ │ ├── CannotApplyEqualityOperatorAttribute.cs
│ │ ├── ContractAnnotationAttribute.cs
│ │ ├── ImplicitUseKindFlags.cs
│ │ ├── ImplicitUseTargetFlags.cs
│ │ ├── InstantHandleAttribute.cs
│ │ ├── InvokerParameterNameAttribute.cs
│ │ ├── LinqTunnelAttribute.cs
│ │ ├── LocalizationRequiredAttribute.cs
│ │ ├── MeansImplicitUseAttribute.cs
│ │ ├── NoEnumerationAttribute.cs
│ │ ├── NotNullAttribute.cs
│ │ ├── NotifyPropertyChangedInvocatorAttribute.cs
│ │ ├── PathReferenceAttribute.cs
│ │ ├── PublicAPIAttribute.cs
│ │ ├── PureAttribute.cs
│ │ ├── ReSharperAnnotations Apache-2.0.licenseheader
│ │ ├── StringFormatMethodAttribute.cs
│ │ ├── TerminatesProgramAttribute.cs
│ │ └── UsedImplicitlyAttribute.cs
│ ├── Remotion.Utilities.ArgumentUtility.Sources.1.15.23.0
│ │ ├── ArgumentUtility.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Utilities.Assertion.Sources.1.15.23.0
│ │ ├── Assertion.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Utilities.ExceptionUtility.Sources.1.15.23.0
│ │ ├── ExceptionUtility.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Utilities.FileUtility.Sources.1.15.33.0
│ │ ├── FileUtility.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Utilities.MemberInfoEqualityComparer.Sources.1.17.6.0
│ │ ├── MemberInfoEqualityComparer.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ └── Remotion.Utilities.NullableTypeUtility.Sources.1.15.23.0
│ │ ├── NullableTypeUtility.cs
│ │ └── SharedSource Apache-2.0.licenseheader
├── AssemblyTrackingCodeManager.cs
├── AssemblyTrackingPipelineFactory.cs
├── Development.csproj
├── Properties
│ └── AssemblyInfo.cs
└── UnitTesting
│ ├── Expressions
│ ├── Assert.cs
│ └── ExpressionTreeComparer.cs
│ ├── ModifyingParticipant.cs
│ ├── ObjectMothers
│ ├── Caching
│ │ └── AssembledTypeIDObjectMother.cs
│ ├── CodeGeneration
│ │ ├── LoadedTypesContextObjectMother.cs
│ │ ├── ProxyTypeAssemblyContextObjectMother.cs
│ │ ├── TestableTypeAssemblyContextBase.cs
│ │ └── TypeAssemblyContextBaseObjectMother.cs
│ ├── Expressions
│ │ └── ExpressionTreeObjectMother.cs
│ └── MutableReflection
│ │ ├── CustomAttributeDeclarationObjectMother.cs
│ │ ├── CustomAttributeReflectionObjectMother.cs
│ │ ├── GenericParameterDeclarationObjectMother.cs
│ │ ├── Generics
│ │ ├── MethodInstantiationObjectMother.cs
│ │ ├── MethodOnTypeInstantiationObjectMother.cs
│ │ ├── MutableGenericParameterObjectMother.cs
│ │ └── TypeInstantiationObjectMother.cs
│ │ ├── Implementation
│ │ ├── ArrayTypeBaseObjectMother.cs
│ │ ├── ByRefTypeObjectMother.cs
│ │ ├── ConstructorOnCustomTypeObjectMother.cs
│ │ ├── CustomConstructorInfoObjectMother.cs
│ │ ├── CustomEventInfoObjectMother.cs
│ │ ├── CustomFieldInfoObjectMother.cs
│ │ ├── CustomMethodInfoObjectMother.cs
│ │ ├── CustomParameterInfoObjectMother.cs
│ │ ├── CustomPropertyInfoObjectMother.cs
│ │ ├── CustomTypeObjectMother.cs
│ │ ├── CustomTypeTestExtensions.cs
│ │ ├── MethodOnCustomTypeObjectMother.cs
│ │ ├── MultiDimensionalArrayTypeObjectMother.cs
│ │ ├── ParameterOnCustomMemberObjectMother.cs
│ │ ├── TestableArrayTypeBase.cs
│ │ ├── TestableCustomConstructorInfo.cs
│ │ ├── TestableCustomEventInfo.cs
│ │ ├── TestableCustomFieldInfo.cs
│ │ ├── TestableCustomMethodInfo.cs
│ │ ├── TestableCustomParameterInfo.cs
│ │ ├── TestableCustomPropertyInfo.cs
│ │ ├── TestableCustomType.cs
│ │ └── VectorTypeObjectMother.cs
│ │ ├── MutableConstructorInfoObjectMother.cs
│ │ ├── MutableEventInfoObjectMother.cs
│ │ ├── MutableFieldInfoObjectMother.cs
│ │ ├── MutableMethodInfoObjectMother.cs
│ │ ├── MutableParameterInfoObjectMother.cs
│ │ ├── MutablePropertyInfoObjectMother.cs
│ │ ├── MutableTypeObjectMother.cs
│ │ └── ParameterDeclarationObjectMother.cs
│ └── PipelineRegistryTestHelper.cs
├── Directory.Packages.props
├── Documentation
├── Documentation.csproj
├── Documentation_initial_pipeline_architecture.png
├── Home_Overview_new_Pipeline.png
└── Properties
│ └── AssemblyInfo.cs
├── Generate-Snk.cmd
├── How to build.txt
├── IntegrationTests
├── App_Packages
│ ├── Remotion.Development.AssemblyLoader.Sources.1.17.6.0
│ │ ├── AssemblyLoader.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Development.BooleanObjectMother.Sources.1.25.23
│ │ ├── BooleanObjectMother.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Development.Dev.Sources.1.15.33.0
│ │ ├── Dev.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Development.NormalizingMemberInfoFromExpressionUtility.Sources.1.17.6.0
│ │ ├── Apache-2.0.licenseheader
│ │ └── NMIFRUtility.cs
│ ├── Remotion.Development.ObjectExtensions.Sources.1.17.6.0
│ │ ├── ObjectExtensions.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Development.PEVerifier.Sources.1.17.10.0
│ │ ├── PEVerifier.cs
│ │ ├── PEVerifyException.cs
│ │ ├── PEVerifyPathSources
│ │ │ ├── CompoundPEVerifyPathSource.cs
│ │ │ ├── DotNetSdk20PEVerifyPathSource.cs
│ │ │ ├── FixedPEVerifyPathSource.cs
│ │ │ ├── IPEVerifyPathSource.cs
│ │ │ ├── PEVerifyVersion.cs
│ │ │ ├── PotentialPEVerifyPathSourceBase.cs
│ │ │ ├── WindowsSdk6PEVerifyPathSource.cs
│ │ │ ├── WindowsSdk70aPEVerifyPathSource.cs
│ │ │ ├── WindowsSdk71PEVerifyPathSource.cs
│ │ │ ├── WindowsSdk80aPEVerifyPathSource.cs
│ │ │ └── WindowsSdk81aPEVerifyPathSource.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Development.PrivateInvoke.Sources.1.17.6.0
│ │ ├── PrivateInvoke.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Development.ReflectionObjectMother.Sources.1.17.6.0
│ │ ├── ReflectionObjectMother.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.FunctionalProgramming.EnumerableExtensions.Sources.1.17.6.0
│ │ ├── EnumerableExtensions.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.FunctionalProgramming.EnumerableUtility.Sources.1.17.6.0
│ │ ├── EnumerableUtility.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.FunctionalProgramming.Maybe.Sources.1.17.6.0
│ │ ├── Maybe.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.JetBrains.Annotations.Sources.1.15.23.0
│ │ ├── AssertionConditionAttribute.cs
│ │ ├── AssertionConditionType.cs
│ │ ├── AssertionMethodAttribute.cs
│ │ ├── BaseTypeRequiredAttribute.cs
│ │ ├── CanBeNullAttribute.cs
│ │ ├── CannotApplyEqualityOperatorAttribute.cs
│ │ ├── ContractAnnotationAttribute.cs
│ │ ├── ImplicitUseKindFlags.cs
│ │ ├── ImplicitUseTargetFlags.cs
│ │ ├── InstantHandleAttribute.cs
│ │ ├── InvokerParameterNameAttribute.cs
│ │ ├── LinqTunnelAttribute.cs
│ │ ├── LocalizationRequiredAttribute.cs
│ │ ├── MeansImplicitUseAttribute.cs
│ │ ├── NoEnumerationAttribute.cs
│ │ ├── NotNullAttribute.cs
│ │ ├── NotifyPropertyChangedInvocatorAttribute.cs
│ │ ├── PathReferenceAttribute.cs
│ │ ├── PublicAPIAttribute.cs
│ │ ├── PureAttribute.cs
│ │ ├── ReSharperAnnotations Apache-2.0.licenseheader
│ │ ├── StringFormatMethodAttribute.cs
│ │ ├── TerminatesProgramAttribute.cs
│ │ └── UsedImplicitlyAttribute.cs
│ ├── Remotion.Utilities.ArgumentUtility.Sources.1.15.23.0
│ │ ├── ArgumentUtility.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Utilities.Assertion.Sources.1.15.23.0
│ │ ├── Assertion.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Utilities.ExceptionUtility.Sources.1.15.23.0
│ │ ├── ExceptionUtility.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ ├── Remotion.Utilities.MemberInfoEqualityComparer.Sources.1.17.6.0
│ │ ├── MemberInfoEqualityComparer.cs
│ │ └── SharedSource Apache-2.0.licenseheader
│ └── Remotion.Utilities.NullableTypeUtility.Sources.1.15.23.0
│ │ ├── NullableTypeUtility.cs
│ │ └── SharedSource Apache-2.0.licenseheader
├── IntegrationTestBase.cs
├── IntegrationTests.csproj
├── IntegrationTests.csproj.DotSettings
├── MutableReflection
│ ├── GetCustomAttributesTest.cs
│ ├── GetInterfaceMapTest.cs
│ ├── IsAssignableFromTest.cs
│ ├── MakeTypePipeGenericMethodTest.cs
│ ├── MakeTypePipeGenericTypeTest.cs
│ ├── MutableTypeMemberSelectionTest.cs
│ ├── MutableTypeObjectMother.cs
│ └── TypePipeCustomAttributeDataTest.cs
├── ParticipantStub.cs
├── Pipeline
│ ├── AdditionalTypeTest.cs
│ ├── CachingTest.cs
│ ├── ConcurrencyTest_WithMultipleGenerationThreads.cs
│ ├── ConcurrencyTest_WithSingleGenerationThread.cs
│ ├── FlushGeneratedCodeTest.cs
│ ├── LoadFlushedCodeTest.cs
│ ├── NoModificationOptimizationTest.cs
│ ├── NonSubclassableTypeTest.cs
│ ├── ObjectCreationTest.cs
│ ├── ObjectInitializationTest.cs
│ ├── ParticipantConfigurationTest.cs
│ ├── ParticipantStateTest.cs
│ └── ReflectionServiceTest.cs
├── Properties
│ └── AssemblyInfo.cs
├── SetupFixture.cs
├── StrongNaming
│ ├── OtherKey.snk
│ └── StrongNamingTest.cs
└── TypeAssembly
│ ├── AbstractTypeTest.cs
│ ├── AddConstructorTest.cs
│ ├── AddCustomAttributeTest.cs
│ ├── AddEventTest.cs
│ ├── AddExplicitOverrideTest.cs
│ ├── AddFieldTest.cs
│ ├── AddGenericMethodTest.cs
│ ├── AddInterfaceTest.cs
│ ├── AddMethodTest.cs
│ ├── AddNestedTypesTest.cs
│ ├── AddPropertyTest.cs
│ ├── ArrayTypeTest.cs
│ ├── ByReferenceTypeTest.cs
│ ├── ConstantRuntimeInfosDlrBugTest.cs
│ ├── CopyMethodBodyTest.cs
│ ├── DefaultExpressionTest.cs
│ ├── DelegateInstantiationTest.cs
│ ├── ExplicitOverridesTest.cs
│ ├── ExpressionHelper.cs
│ ├── GenerateAdditionalTypesTest.cs
│ ├── GenerationCompletedEventTest.cs
│ ├── GenericParameterConversionsTest.cs
│ ├── GenericParameterMemberAccessTest.cs
│ ├── GetOrAddOverrideBaseMethodTest.cs
│ ├── ImplicitOverridesTest.cs
│ ├── InterfaceImplementationTest.cs
│ ├── KeepConstructorsTest.cs
│ ├── LambdaExpressionTest.cs
│ ├── MethodAttributesOnOverrideTest.cs
│ ├── MethodInstantiationInExpressionTreesTest.cs
│ ├── ModifyConstructorTest.cs
│ ├── ModifyGenericMethodTest.cs
│ ├── ModifyGenericTypeTest.cs
│ ├── ModifyMethodTest.cs
│ ├── MutableTypeInSignaturesTest.cs
│ ├── ReImplementInterfaceMethodTest.cs
│ ├── ReferenceMutableMembersTest.cs
│ ├── ReflectionWorkaroundsTest.cs
│ ├── ShadowingTest.cs
│ ├── StackSpillerTest.cs
│ ├── TypeAssemblerIntegrationTestBase.cs
│ ├── TypeInitializerTest.cs
│ └── TypeInstantiationInExpressionTreesTest.cs
├── NuGet.config
├── ReadMe.md
├── Remotion-TypePipe.dependdb.xml
├── Remotion-TypePipe.sln
├── Remotion-TypePipe.sln.DotSettings
├── Remotion-TypePipe.sln.rn.xml
├── Shared.build.props
├── global.json
├── license
├── Apache-2.0.txt
└── NOTICE.txt
└── packages
├── PackageInfo.ps1
└── repositories.config
/.BuildProject:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Build/Customizations/releaseProcessScript.config
5 |
--------------------------------------------------------------------------------
/.gitattributes:
--------------------------------------------------------------------------------
1 | # Set default behaviour, in case users don't have core.autocrlf set.
2 | * text=auto
3 |
4 | # DotSettings files have LFs, not CRLFs
5 | *.DotSettings text eol=lf
6 |
--------------------------------------------------------------------------------
/Build-OneClick.cmd:
--------------------------------------------------------------------------------
1 | start Build-Remotion.cmd run_test_build
--------------------------------------------------------------------------------
/Build/Build.licenseheader:
--------------------------------------------------------------------------------
1 | extensions: .build .targets .nuspec .ps1
2 |
--------------------------------------------------------------------------------
/Build/Customizations/Configuration.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
--------------------------------------------------------------------------------
/Build/Customizations/Local/Configuration.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Unavailable
6 | Unavailable
7 | Unavailable
8 |
9 |
10 |
--------------------------------------------------------------------------------
/Build/Customizations/Local/Configuration.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | LocalMachine
6 | NET48
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | LocalMachine
16 | NET48
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/Build/Customizations/Properties.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | $(SolutionDirectory)AssemblyInfoShared.*
5 | rubicon IT GmbH
6 | http://www.rubicon.eu
7 | Copyright (c) rubicon IT GmbH, www.rubicon.eu - Licensed under Apache License 2.0
8 | re-motion Framework: TypePipe (www.re-motion.org)
9 | Remotion.TypePipe
10 | $(SolutionDirectory)Core\Doc\include\GettingStartedWithTypePipe.aml
11 | $(SolutionDirectory)**\Doc\include\*.NamespaceDoc.xml
12 | re-motion TypePipe
13 | 10
14 | Main
15 |
16 |
17 |
18 | Remotion.*
19 | $(SolutionDirectory)packages
20 | net45
21 |
22 |
--------------------------------------------------------------------------------
/Build/Customizations/Server/Configuration.targets:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Win_NET48
6 | NET48
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 | Win_NET48+Win_NET472+Win_NET462
16 | NET48+NET472+NET462
17 |
18 | True
19 |
20 | True
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Build/Customizations/Version.props:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
12 | 4.1.0
13 |
14 |
--------------------------------------------------------------------------------
/Build/How-to-Release.md:
--------------------------------------------------------------------------------
1 | # Install Release Process Automation Tool
2 |
3 | `dotnet tool install Remotion.ReleaseProcessAutomation -g --add-source https://nuget.re-motion.org/nuget/re-motion-infrastructure/ --prerelease`
4 |
5 | # Perform a Release
6 |
7 | On the commandline, use `releasetool` to start the process.
8 |
9 | # Reference Section
10 |
11 | `.BuildProject`: located in the solution root. Indicates the location of the configuration file.
12 |
13 | `Build/Customizations/releaseProcessScript.config`: The release tool configuration file.
14 | Contains the MSBuild version and other solution specific details relevant for releasing a new version.
--------------------------------------------------------------------------------
/Build/app.config:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
--------------------------------------------------------------------------------
/Build/teamcity.properties:
--------------------------------------------------------------------------------
1 | MSBuildVersion=17.0
--------------------------------------------------------------------------------
/Core.UnitTests/App_Packages/Remotion.Development.BooleanObjectMother.Sources.1.25.23/SharedSource Apache-2.0.licenseheader:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Core.UnitTests/App_Packages/Remotion.Development.BooleanObjectMother.Sources.1.25.23/SharedSource Apache-2.0.licenseheader
--------------------------------------------------------------------------------
/Core.UnitTests/App_Packages/Remotion.Utilities.Assertion.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Core.UnitTests/App_Packages/Remotion.Utilities.Assertion.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader
--------------------------------------------------------------------------------
/Core.UnitTests/App_Packages/Remotion.Utilities.ExceptionUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Core.UnitTests/App_Packages/Remotion.Utilities.ExceptionUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader
--------------------------------------------------------------------------------
/Core.UnitTests/App_Packages/Remotion.Utilities.NullableTypeUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Core.UnitTests/App_Packages/Remotion.Utilities.NullableTypeUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader
--------------------------------------------------------------------------------
/Core.UnitTests/CodeGeneration/ReflectionEmit/Expressions/UnemittableExpressionVisitorTest.cs:
--------------------------------------------------------------------------------
1 | using System;
--------------------------------------------------------------------------------
/Core.UnitTests/CodeGeneration/ReflectionEmit/LambdaCompilation/ILGeneratorObjectMother.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Reflection.Emit;
19 |
20 | namespace Remotion.TypePipe.UnitTests.CodeGeneration.ReflectionEmit.LambdaCompilation
21 | {
22 | public static class ILGeneratorObjectMother
23 | {
24 | public static ILGenerator Create ()
25 | {
26 | var dynamicMethod = new DynamicMethod ("Test", typeof (void), Type.EmptyTypes);
27 | return dynamicMethod.GetILGenerator();
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/Core.UnitTests/CodeGeneration/ReflectionEmit/OtherKey.snk:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Core.UnitTests/CodeGeneration/ReflectionEmit/OtherKey.snk
--------------------------------------------------------------------------------
/Core.UnitTests/Core.UnitTests.csproj:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | Test
5 |
6 |
7 |
8 |
9 |
10 | Remotion TypePipe Library Unit Tests
11 | Remotion.TypePipe.UnitTests
12 | $(AssemblyName)
13 |
14 |
15 |
16 |
17 | PreserveNewest
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
--------------------------------------------------------------------------------
/Core.UnitTests/Implementation/TestDomain/ClassWithManyConstructorArguments.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 |
19 | namespace Remotion.TypePipe.UnitTests.Implementation.TestDomain
20 | {
21 | public class ClassWithManyConstructorArguments
22 | {
23 | public int[] Values;
24 |
25 | public ClassWithManyConstructorArguments (int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15, int a16, int a17, int a18, int a19, int a20, int a21, int a22, int a23, int a24, int a25, int a26, int a27, int a28)
26 | {
27 | Values = new[] { a1, a2, a3, a4, a5, a6, a7, a8, a9, a10, a11, a12, a13, a14, a15, a16, a17, a18, a19, a20, a21, a22, a23, a24, a25, a26, a27, a28 };
28 | }
29 | }
30 | }
31 |
--------------------------------------------------------------------------------
/Core.UnitTests/Moq/MoqExtensions.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Collections.Generic;
19 | using NUnit.Framework.Constraints;
20 |
21 | namespace Remotion.TypePipe.UnitTests.Moq
22 | {
23 | public static class MoqExtensions
24 | {
25 | public static bool IsEquivalent (this IEnumerable actual, IEnumerable expected)
26 | {
27 | return new CollectionEquivalentConstraint (expected).ApplyTo (actual).IsSuccess;
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/Core.UnitTests/MutableReflection/BodyBuilding/TestableBodyContextBase.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using Remotion.TypePipe.MutableReflection;
19 | using Remotion.TypePipe.MutableReflection.BodyBuilding;
20 |
21 | namespace Remotion.TypePipe.UnitTests.MutableReflection.BodyBuilding
22 | {
23 | public class TestableBodyContextBase : BodyContextBase
24 | {
25 | public TestableBodyContextBase (MutableType declaringType, bool isStatic)
26 | : base (declaringType, isStatic)
27 | {
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/Core.UnitTests/MutableReflection/BodyBuilding/TestableConstructorBodyContextBase.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Collections.Generic;
19 | using Remotion.TypePipe.Dlr.Ast;
20 | using Remotion.TypePipe.MutableReflection;
21 | using Remotion.TypePipe.MutableReflection.BodyBuilding;
22 |
23 | namespace Remotion.TypePipe.UnitTests.MutableReflection.BodyBuilding
24 | {
25 | public class TestableConstructorBodyContextBase : ConstructorBodyContextBase
26 | {
27 | public TestableConstructorBodyContextBase (
28 | MutableType declaringType, bool isStatic, IEnumerable parameterExpressions)
29 | : base (declaringType, isStatic, parameterExpressions)
30 | {
31 | }
32 | }
33 | }
--------------------------------------------------------------------------------
/Core.UnitTests/MutableReflection/BodyBuilding/TestableMethodBaseBodyContextBase.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Collections.Generic;
19 | using Remotion.TypePipe.Dlr.Ast;
20 | using Remotion.TypePipe.MutableReflection;
21 | using Remotion.TypePipe.MutableReflection.BodyBuilding;
22 |
23 | namespace Remotion.TypePipe.UnitTests.MutableReflection.BodyBuilding
24 | {
25 | public class TestableMethodBaseBodyContextBase : MethodBaseBodyContextBase
26 | {
27 | public TestableMethodBaseBodyContextBase (MutableType declaringType, IEnumerable parameterExpressions, bool isStatic)
28 | : base (declaringType, isStatic, parameterExpressions) {}
29 | }
30 | }
--------------------------------------------------------------------------------
/Core.UnitTests/MutableReflection/BodyBuilding/TestableMethodBodyContextBase.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Collections.Generic;
19 | using System.Reflection;
20 | using Remotion.TypePipe.Dlr.Ast;
21 | using Remotion.TypePipe.MutableReflection;
22 | using Remotion.TypePipe.MutableReflection.BodyBuilding;
23 |
24 | namespace Remotion.TypePipe.UnitTests.MutableReflection.BodyBuilding
25 | {
26 | public class TestableMethodBodyContextBase : MethodBodyContextBase
27 | {
28 | public TestableMethodBodyContextBase (
29 | MutableType declaringType,
30 | bool isStatic,
31 | IEnumerable parameterExpressions,
32 | IEnumerable genericParameters,
33 | Type returnType,
34 | MethodInfo baseMethod)
35 | : base (declaringType, isStatic, parameterExpressions, genericParameters, returnType, baseMethod) {}
36 | }
37 | }
--------------------------------------------------------------------------------
/Core.UnitTests/MutableReflection/MemberSignatures/TestDomain/ClassForSignatureComparisons.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 |
19 | namespace Remotion.TypePipe.UnitTests.MutableReflection.MemberSignatures.TestDomain
20 | {
21 | public class ClassForSignatureComparisons
22 | {
23 | public ClassForSignatureComparisons () { }
24 | public ClassForSignatureComparisons (int i) { }
25 |
26 | public int M1 () { return 0; }
27 | public int M2 () { return 0; }
28 | public int M3 (int i) { return 0; }
29 |
30 | public int P1 { get; set; }
31 | public int P2 { get; set; }
32 | public string P3 { get; set; }
33 |
34 | public event EventHandler E1;
35 | public event EventHandler E2;
36 | public event EventHandler E3;
37 |
38 | public string F1;
39 | public string F2;
40 | public object F3;
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/Core.UnitTests/MutableReflection/MemberSignatures/TestDomain/ClassForSignatureComparisons2.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 |
19 | namespace Remotion.TypePipe.UnitTests.MutableReflection.MemberSignatures.TestDomain
20 | {
21 | public class ClassForSignatureComparisons2
22 | {
23 | public ClassForSignatureComparisons2 () { }
24 | }
25 | }
--------------------------------------------------------------------------------
/Core.UnitTests/MutableReflection/MutableConstructorInfoTestHelper.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using Remotion.TypePipe.Development.UnitTesting.ObjectMothers.Expressions;
19 | using Remotion.TypePipe.MutableReflection;
20 |
21 | namespace Remotion.TypePipe.UnitTests.MutableReflection
22 | {
23 | public static class MutableConstructorInfoTestHelper
24 | {
25 | public static void ModifyConstructor (MutableConstructorInfo mutableConstructor)
26 | {
27 | mutableConstructor.SetBody (ctx => ExpressionTreeObjectMother.GetSomeExpression (typeof (void)));
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/Core.UnitTests/MutableReflection/MutableFieldInfoTestHelper.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using Remotion.TypePipe.Development.UnitTesting.ObjectMothers.MutableReflection;
19 | using Remotion.TypePipe.MutableReflection;
20 |
21 | namespace Remotion.TypePipe.UnitTests.MutableReflection
22 | {
23 | public static class MutableFieldInfoTestHelper
24 | {
25 | public static void ModifyField (MutableFieldInfo mutableField)
26 | {
27 | mutableField.AddCustomAttribute (CustomAttributeDeclarationObjectMother.Create());
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/Core.UnitTests/MutableReflection/MutableMethodInfoTestHelper.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using Remotion.TypePipe.Development.UnitTesting.ObjectMothers.Expressions;
19 | using Remotion.TypePipe.MutableReflection;
20 |
21 | namespace Remotion.TypePipe.UnitTests.MutableReflection
22 | {
23 | public static class MutableMethodInfoTestHelper
24 | {
25 | public static void ModifyMethod (MutableMethodInfo mutableMethod)
26 | {
27 | mutableMethod.SetBody (ctx => ExpressionTreeObjectMother.GetSomeExpression (mutableMethod.ReturnType));
28 | }
29 | }
30 | }
--------------------------------------------------------------------------------
/Core.UnitTests/Properties/AssemblyInfo.cs:
--------------------------------------------------------------------------------
1 | // This file is part of the re-motion TypePipe project (typepipe.codeplex.com)
2 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
3 | //
4 | // re-motion TypePipe is free software; you can redistribute it
5 | // and/or modify it under the terms of the Apache License, Version 2.0
6 | // as published by the Apache Software Foundation.
7 | //
8 | // re-motion TypePipe is distributed in the hope that it will be useful,
9 | // but WITHOUT ANY WARRANTY; without even the implied warranty of
10 | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 | // Apache License, Version 2.0 for more details.
12 | //
13 | // You should have received a copy of the Apache License, Version 2.0
14 | // along with re-motion; if not, see http://www.apache.org/licenses.
15 | //
16 | using System;
17 | using System.Reflection;
18 |
19 | [assembly: AssemblyCulture ("")]
--------------------------------------------------------------------------------
/Core.UnitTests/StrongNaming/AssemblyAnalyzerTest.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Reflection;
19 | using System.Reflection.Emit;
20 | using NUnit.Framework;
21 | using Remotion.TypePipe.StrongNaming;
22 |
23 | namespace Remotion.TypePipe.UnitTests.StrongNaming
24 | {
25 | [TestFixture]
26 | public class AssemblyAnalyzerTest
27 | {
28 | private AssemblyAnalyzer _analyzer;
29 |
30 | [SetUp]
31 | public void SetUp ()
32 | {
33 | _analyzer = new AssemblyAnalyzer();
34 | }
35 |
36 | [Test]
37 | public void IsStrongNamed ()
38 | {
39 | var assembly1 = typeof (AssemblyAnalyzerTest).Assembly;
40 | var assembly2 = AssemblyBuilder.DefineDynamicAssembly (new AssemblyName ("test1"), AssemblyBuilderAccess.Run);
41 |
42 | Assert.That (_analyzer.IsStrongNamed (assembly1), Is.True);
43 | Assert.That (_analyzer.IsStrongNamed (assembly2), Is.False);
44 | }
45 | }
46 | }
--------------------------------------------------------------------------------
/Core.UnitTests/TypeAssembly/Implementation/TypeAssemblyResultTest.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using System.Collections.Generic;
3 | using NUnit.Framework;
4 | using Remotion.Development.UnitTesting.Reflection;
5 | using Remotion.TypePipe.TypeAssembly.Implementation;
6 | using Moq;
7 |
8 | namespace Remotion.TypePipe.UnitTests.TypeAssembly.Implementation
9 | {
10 | [TestFixture]
11 | public class TypeAssemblyResultTest
12 | {
13 | [Test]
14 | public void Initialize_WithTypeAndAdditionalTypes ()
15 | {
16 | var type = ReflectionObjectMother.GetSomeClassType();
17 | var additionalTypes = new Mock> (MockBehavior.Strict);
18 |
19 | var result = new TypeAssemblyResult(type, additionalTypes.Object);
20 |
21 | Assert.That (result.Type, Is.SameAs (type));
22 | Assert.That (result.AdditionalTypes, Is.SameAs (additionalTypes.Object));
23 | }
24 |
25 | [Test]
26 | public void Initialize_WithTypeOnly ()
27 | {
28 | var type = ReflectionObjectMother.GetSomeClassType();
29 |
30 | var result = new TypeAssemblyResult(type);
31 |
32 | Assert.That (result.Type, Is.SameAs (type));
33 | Assert.That (result.AdditionalTypes, Is.Empty);
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/Core.UnitTests/TypeAssembly/ParticipantStateTest.cs:
--------------------------------------------------------------------------------
1 | using System;
2 | using NUnit.Framework;
3 | using Remotion.TypePipe.TypeAssembly;
4 |
5 | namespace Remotion.TypePipe.UnitTests.TypeAssembly
6 | {
7 | [TestFixture]
8 | public class ParticipantStateTest
9 | {
10 | [Test]
11 | public void GetState_WithIDForAddedValue_ReturnsValue ()
12 | {
13 | var participantState = new ParticipantState();
14 | var value = new object();
15 | participantState.AddState ("TheID", value);
16 |
17 | Assert.That (participantState.GetState ("TheID"), Is.SameAs (value));
18 | }
19 |
20 | [Test]
21 | public void GetState_WithUnknownID_ReturnsNull ()
22 | {
23 | var participantState = new ParticipantState();
24 |
25 | Assert.That (participantState.GetState ("UnknownID"), Is.Null);
26 | }
27 |
28 | [Test]
29 | public void AddState_WithExistingID_ThrowsInvalidOperationException ()
30 | {
31 | var participantState = new ParticipantState();
32 | participantState.AddState ("TheID", new object());
33 |
34 | Assert.That (
35 | () => participantState.AddState ("TheID", new object()),
36 | Throws.InvalidOperationException
37 | .With.Message.EqualTo ("State identified by the id 'TheID' already exists. State identifier must be unique."));
38 | }
39 | }
40 | }
--------------------------------------------------------------------------------
/Core/App_Packages/Remotion.Utilities.Assertion.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Core/App_Packages/Remotion.Utilities.Assertion.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader
--------------------------------------------------------------------------------
/Core/App_Packages/Remotion.Utilities.EqualityUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Core/App_Packages/Remotion.Utilities.EqualityUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader
--------------------------------------------------------------------------------
/Core/App_Packages/Remotion.Utilities.ExceptionUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Core/App_Packages/Remotion.Utilities.ExceptionUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader
--------------------------------------------------------------------------------
/Core/App_Packages/Remotion.Utilities.NullableTypeUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/re-motion/TypePipe/57e2ffbb98d04934a140fc5fab601d85ab8ce9a5/Core/App_Packages/Remotion.Utilities.NullableTypeUtility.Sources.1.15.23.0/SharedSource Apache-2.0.licenseheader
--------------------------------------------------------------------------------
/Core/Caching/IConstructorCallCache.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 |
19 | namespace Remotion.TypePipe.Caching
20 | {
21 | ///
22 | /// Caches the s that perform constructor calls for pipeline generated s to enable efficient object creation.
23 | ///
24 | ///
25 | public interface IConstructorCallCache
26 | {
27 | Delegate GetOrCreateConstructorCall (AssembledTypeID typeID, Type delegateType, bool allowNonPublic);
28 | }
29 | }
--------------------------------------------------------------------------------
/Core/Caching/IConstructorForAssembledTypeCache.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 |
19 | namespace Remotion.TypePipe.Caching
20 | {
21 | ///
22 | /// Caches constructor delegates for assembled types, i.e., the assembled type is part of the key.
23 | ///
24 | ///
25 | public interface IConstructorForAssembledTypeCache
26 | {
27 | Delegate GetOrCreateConstructorCall (Type assembledType, Type delegateType, bool allowNonPublic);
28 | }
29 | }
--------------------------------------------------------------------------------
/Core/Caching/ITypeCache.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Collections.Generic;
19 |
20 | namespace Remotion.TypePipe.Caching
21 | {
22 | ///
23 | /// Caches the s generated by the pipeline and supports loading of s.
24 | ///
25 | ///
26 | public interface ITypeCache
27 | {
28 | Type GetOrCreateType (AssembledTypeID typeID);
29 |
30 | void LoadTypes (IEnumerable generatedTypes);
31 |
32 | Type GetOrCreateAdditionalType (object additionalTypeID);
33 | }
34 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/IConstructorDelegateFactory.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 |
19 | namespace Remotion.TypePipe.CodeGeneration
20 | {
21 | ///
22 | /// Interface for classes creating delegates for constructing instances of assembled types.
23 | ///
24 | ///
25 | public interface IConstructorDelegateFactory
26 | {
27 | Delegate CreateConstructorCall (Type requestedType, Type assembledType, Type delegateType, bool allowNonPublic);
28 | }
29 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/IDependentTypeSorter.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Collections.Generic;
19 | using Remotion.TypePipe.MutableReflection;
20 |
21 | namespace Remotion.TypePipe.CodeGeneration
22 | {
23 | ///
24 | /// An interface for classes that sort types according to their base type and interface dependencies.
25 | ///
26 | ///
27 | public interface IDependentTypeSorter
28 | {
29 | IEnumerable Sort (IEnumerable types);
30 | }
31 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/IMutableTypeCodeGeneratorFactory.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Collections.Generic;
19 | using Remotion.TypePipe.MutableReflection;
20 |
21 | namespace Remotion.TypePipe.CodeGeneration
22 | {
23 | ///
24 | /// Defines an interface for classes creating instances of .
25 | ///
26 | ///
27 | [CLSCompliant (false)]
28 | public interface IMutableTypeCodeGeneratorFactory
29 | {
30 | IEnumerable CreateGenerators (IEnumerable mutableTypes);
31 | }
32 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/Abstractions/IAssemblyBuilder.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Reflection.Emit;
19 |
20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions
21 | {
22 | ///
23 | /// Defines an interface for .
24 | ///
25 | public interface IAssemblyBuilder : ICustomAttributeTargetBuilder
26 | {
27 | string SaveToDisk ();
28 | }
29 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/Abstractions/IConstructorBuilder.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Reflection.Emit;
19 | using Remotion.TypePipe.MutableReflection;
20 |
21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions
22 | {
23 | ///
24 | /// Defines an interface for .
25 | ///
26 | [CLSCompliant (false)]
27 | public interface IConstructorBuilder : IMethodBaseBuilder
28 | {
29 | void RegisterWith (IEmittableOperandProvider emittableOperandProvider, MutableConstructorInfo constructor);
30 | }
31 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/Abstractions/ICustomAttributeTargetBuilder.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using Remotion.TypePipe.MutableReflection;
19 |
20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions
21 | {
22 | ///
23 | /// Defines a common interface for builders that create elements which can be used as targets for custom attributes.
24 | ///
25 | public interface ICustomAttributeTargetBuilder
26 | {
27 | void SetCustomAttribute (CustomAttributeDeclaration customAttributeDeclaration);
28 | }
29 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/Abstractions/IEventBuilder.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Reflection.Emit;
19 |
20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions
21 | {
22 | ///
23 | /// Defines an interface for .
24 | ///
25 | [CLSCompliant (false)]
26 | public interface IEventBuilder : ICustomAttributeTargetBuilder
27 | {
28 | void SetAddOnMethod (IMethodBuilder addMethodBuilder);
29 | void SetRemoveOnMethod (IMethodBuilder removeMethodBuilder);
30 | void SetRaiseMethod (IMethodBuilder raiseMethodBuilder);
31 | }
32 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/Abstractions/IFieldBuilder.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Reflection.Emit;
19 | using Remotion.TypePipe.MutableReflection;
20 |
21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions
22 | {
23 | ///
24 | /// Defines an interface for .
25 | ///
26 | public interface IFieldBuilder : ICustomAttributeTargetBuilder
27 | {
28 | void RegisterWith (IEmittableOperandProvider emittableOperandProvider, MutableFieldInfo field);
29 | }
30 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/Abstractions/IGenericTypeParameterBuilder.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Reflection;
19 | using System.Reflection.Emit;
20 | using Remotion.TypePipe.MutableReflection.Generics;
21 |
22 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions
23 | {
24 | ///
25 | /// Defines an interface for .
26 | ///
27 | public interface IGenericTypeParameterBuilder : ICustomAttributeTargetBuilder
28 | {
29 | void RegisterWith (IEmittableOperandProvider emittableOperandProvider, MutableGenericParameter genericParameter);
30 |
31 | void SetBaseTypeConstraint (Type baseTypeConstraint);
32 | void SetInterfaceConstraints (Type[] interfaceConstraints);
33 | void SetGenericParameterAttributes (GenericParameterAttributes genericParameterAttributes);
34 | }
35 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/Abstractions/IMethodBaseBuilder.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Reflection;
19 | using System.Reflection.Emit;
20 | using Remotion.TypePipe.CodeGeneration.ReflectionEmit.LambdaCompilation;
21 | using Remotion.TypePipe.Dlr.Ast;
22 | using Remotion.TypePipe.Dlr.Runtime.CompilerServices;
23 |
24 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions
25 | {
26 | ///
27 | /// Defines a common interface for and .
28 | ///
29 | [CLSCompliant (false)]
30 | public interface IMethodBaseBuilder : ICustomAttributeTargetBuilder
31 | {
32 | IParameterBuilder DefineParameter (int iSequence, ParameterAttributes attributes, string strParamName);
33 |
34 | void SetBody (LambdaExpression body, IILGeneratorFactory ilGeneratorFactory, DebugInfoGenerator debugInfoGeneratorOrNull);
35 | }
36 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/Abstractions/IMethodBuilder.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Reflection.Emit;
19 | using Remotion.TypePipe.MutableReflection;
20 |
21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions
22 | {
23 | ///
24 | /// Defines an interface for .
25 | ///
26 | [CLSCompliant (false)]
27 | public interface IMethodBuilder : IMethodBaseBuilder
28 | {
29 | void RegisterWith (IEmittableOperandProvider emittableOperandProvider, MutableMethodInfo method);
30 |
31 | IGenericTypeParameterBuilder[] DefineGenericParameters (string[] names);
32 |
33 | void SetReturnType (Type returnType);
34 | void SetParameters (Type[] parameterTypes);
35 | }
36 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/Abstractions/IModuleBuilder.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Reflection;
19 | using System.Reflection.Emit;
20 |
21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions
22 | {
23 | ///
24 | /// Defines an interface for .
25 | ///
26 | [CLSCompliant (false)]
27 | public interface IModuleBuilder : ICustomAttributeTargetBuilder
28 | {
29 | IAssemblyBuilder AssemblyBuilder { get; }
30 |
31 | ITypeBuilder DefineType (string name, TypeAttributes attr);
32 | }
33 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/Abstractions/IParameterBuilder.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Reflection.Emit;
19 |
20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions
21 | {
22 | ///
23 | /// Defines an interface for .
24 | ///
25 | public interface IParameterBuilder : ICustomAttributeTargetBuilder
26 | {
27 | }
28 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/Abstractions/IPropertyBuilder.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Reflection.Emit;
19 |
20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions
21 | {
22 | ///
23 | /// Defines an interface for .
24 | ///
25 | [CLSCompliant (false)]
26 | public interface IPropertyBuilder : ICustomAttributeTargetBuilder
27 | {
28 | void SetGetMethod (IMethodBuilder getMethodBuilder);
29 | void SetSetMethod (IMethodBuilder setMethodBuilder);
30 | }
31 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/Abstractions/ParameterBuilderAdapter.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Reflection.Emit;
19 | using Remotion.Utilities;
20 |
21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions
22 | {
23 | ///
24 | /// Adapts with the interface.
25 | ///
26 | public class ParameterBuilderAdapter : BuilderAdapterBase, IParameterBuilder
27 | {
28 | public ParameterBuilderAdapter (ParameterBuilder parameterBuilder)
29 | : base (ArgumentUtility.CheckNotNull ("parameterBuilder", parameterBuilder).SetCustomAttribute)
30 | {
31 | }
32 | }
33 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/Abstractions/ParameterBuilderDecorator.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using Remotion.TypePipe.MutableReflection.Implementation;
19 |
20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions
21 | {
22 | ///
23 | /// Decorates an instance of to allow s to be used in signatures and
24 | /// for checking strong-name compatibility.
25 | ///
26 | public class ParameterBuilderDecorator : BuilderDecoratorBase, IParameterBuilder
27 | {
28 | public ParameterBuilderDecorator (IParameterBuilder parameterBuilder, IEmittableOperandProvider emittableOperandProvider)
29 | : base (parameterBuilder, emittableOperandProvider)
30 | {
31 | }
32 | }
33 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/DeferredActionManager.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Collections.Generic;
19 | using Remotion.Utilities;
20 |
21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit
22 | {
23 | ///
24 | /// Manages a list of actions that are to be executed at a later point of time.
25 | ///
26 | public class DeferredActionManager
27 | {
28 | private readonly Queue _deferredActions = new Queue();
29 |
30 | public IEnumerable Actions
31 | {
32 | get { return _deferredActions; }
33 | }
34 |
35 | public void AddAction (Action action)
36 | {
37 | ArgumentUtility.CheckNotNull ("action", action);
38 |
39 | _deferredActions.Enqueue (action);
40 | }
41 |
42 | public void ExecuteAllActions ()
43 | {
44 | while (_deferredActions.Count > 0)
45 | _deferredActions.Dequeue()();
46 | }
47 | }
48 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/Expressions/ICodeGenerationExpression.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using Remotion.TypePipe.Dlr.Ast;
19 | using Remotion.TypePipe.Expressions;
20 |
21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Expressions
22 | {
23 | ///
24 | /// Identifies expressions that are specific to the code generator.
25 | ///
26 | /// Expressions of this type can be handled using an .
27 | ///
28 | public interface ICodeGenerationExpression : IPrimitiveTypePipeExpression
29 | {
30 | Expression Accept (ICodeGenerationExpressionVisitor visitor);
31 | }
32 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/Expressions/ICodeGenerationExpressionVisitor.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using Remotion.TypePipe.Dlr.Ast;
19 | using Remotion.TypePipe.Expressions;
20 |
21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Expressions
22 | {
23 | ///
24 | /// Defines an interface for classes handling instances.
25 | ///
26 | public interface ICodeGenerationExpressionVisitor : IPrimitiveTypePipeExpressionVisitor
27 | {
28 | Expression VisitBox (BoxAndCastExpression node);
29 | Expression VisitUnbox (UnboxExpression node);
30 | }
31 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/Expressions/UnboxExpression.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Reflection.Emit;
19 | using Remotion.TypePipe.Dlr.Ast;
20 | using Remotion.Utilities;
21 |
22 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.Expressions
23 | {
24 | ///
25 | /// Represents an operation.
26 | ///
27 | public class UnboxExpression : UnaryExpressionBase
28 | {
29 | public UnboxExpression (Expression operand, Type toType)
30 | : base (operand, toType)
31 | {
32 | }
33 |
34 | public override Expression Accept (ICodeGenerationExpressionVisitor visitor)
35 | {
36 | ArgumentUtility.CheckNotNull ("visitor", visitor);
37 |
38 | return visitor.VisitUnbox (this);
39 | }
40 |
41 | protected override UnaryExpressionBase CreateSimiliar (Expression operand)
42 | {
43 | return new UnboxExpression (operand, Type);
44 | }
45 | }
46 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/IDelegateProvider.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Collections.Generic;
19 |
20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit
21 | {
22 | ///
23 | /// Defines an interface for classes that provide delegate s for a given signature.
24 | ///
25 | /// This interface is an implementation detail of .
26 | public interface IDelegateProvider
27 | {
28 | Type GetDelegateType (Type returnType, IEnumerable parameterTypes);
29 | }
30 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/IExpressionPreparer.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using Remotion.TypePipe.Dlr.Ast;
19 |
20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit
21 | {
22 | ///
23 | /// Defines an interface for classes preparing method (and constructor) bodies so that code can be generated for them.
24 | ///
25 | public interface IExpressionPreparer
26 | {
27 | Expression PrepareBody (CodeGenerationContext context, Expression body);
28 | }
29 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/IInitializationBuilder.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Reflection;
19 | using JetBrains.Annotations;
20 | using Remotion.TypePipe.MutableReflection;
21 |
22 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit
23 | {
24 | ///
25 | /// Helps with building initializations for a .
26 | ///
27 | /// This interface is an implementation detail of .
28 | ///
29 | public interface IInitializationBuilder
30 | {
31 | [CanBeNull] Tuple CreateInitializationMembers ([NotNull] MutableType mutableType);
32 |
33 | void WireConstructorWithInitialization (
34 | [NotNull] MutableConstructorInfo constructor,
35 | [CanBeNull] Tuple initializationMembers);
36 | }
37 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/IMemberEmitter.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using Remotion.TypePipe.MutableReflection;
19 |
20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit
21 | {
22 | ///
23 | /// Defines an interface for classes emitting members for mutable reflection objects. Used by .
24 | ///
25 | public interface IMemberEmitter
26 | {
27 | void AddField (CodeGenerationContext context, MutableFieldInfo field);
28 | void AddConstructor (CodeGenerationContext context, MutableConstructorInfo constructor);
29 | void AddMethod (CodeGenerationContext context, MutableMethodInfo method);
30 | void AddProperty (CodeGenerationContext context, MutablePropertyInfo property);
31 | void AddEvent (CodeGenerationContext context, MutableEventInfo event_);
32 | }
33 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/IMemberEmitterFactory.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 |
19 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit
20 | {
21 | ///
22 | /// Defines an interface for factories.
23 | ///
24 | ///
25 | public interface IMemberEmitterFactory
26 | {
27 | IMemberEmitter CreateMemberEmitter (IEmittableOperandProvider emittableOperandProvider);
28 | }
29 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/IMethodTrampolineProvider.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Reflection;
19 |
20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit
21 | {
22 | ///
23 | /// Provides method stubs for performing non virtual calls to virtual methods as it is needed for base calls.
24 | ///
25 | public interface IMethodTrampolineProvider
26 | {
27 | MethodInfo GetNonVirtualCallTrampoline (CodeGenerationContext context, MethodInfo method);
28 | }
29 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/IMutableNestedTypeCodeGeneratorFactory.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions;
19 | using Remotion.TypePipe.MutableReflection;
20 |
21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit
22 | {
23 | ///
24 | /// Defines an interface for classes creating instances of for nested types.
25 | ///
26 | [CLSCompliant (false)]
27 | public interface IMutableNestedTypeCodeGeneratorFactory
28 | {
29 | IMutableTypeCodeGenerator Create (ITypeBuilder enclosingTypeBuilder, MutableType nestedType);
30 | }
31 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/IReflectionEmitCodeGenerator.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Reflection;
19 | using Remotion.TypePipe.CodeGeneration.ReflectionEmit.Abstractions;
20 | using Remotion.TypePipe.Dlr.Runtime.CompilerServices;
21 |
22 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit
23 | {
24 | ///
25 | /// Provides Reflection.Emit-specifc operations to the code generation.
26 | ///
27 | ///
28 | [CLSCompliant (false)]
29 | public interface IReflectionEmitCodeGenerator
30 | {
31 | DebugInfoGenerator DebugInfoGenerator { get; }
32 |
33 | IEmittableOperandProvider CreateEmittableOperandProvider ();
34 | ITypeBuilder DefineType (string name, TypeAttributes attributes, IEmittableOperandProvider emittableOperandProvider);
35 | }
36 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/LambdaCompilation/DelegateProvider.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Collections.Generic;
19 | using System.Linq;
20 | using Remotion.TypePipe.Dlr.Ast.Compiler;
21 | using Remotion.Utilities;
22 |
23 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.LambdaCompilation
24 | {
25 | ///
26 | /// Creates or retrieves delegate s by delegating to .
27 | ///
28 | public class DelegateProvider : IDelegateProvider
29 | {
30 | public Type GetDelegateType (Type returnType, IEnumerable parameterTypes)
31 | {
32 | ArgumentUtility.CheckNotNull ("returnType", returnType);
33 | ArgumentUtility.CheckNotNull ("parameterTypes", parameterTypes);
34 |
35 | var types = parameterTypes.Concat (new[] { returnType }).ToArray();
36 | return DelegateHelpers.MakeDelegateType (types);
37 | }
38 | }
39 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/LambdaCompilation/IILGeneratorFactory.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using System.Reflection.Emit;
19 |
20 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit.LambdaCompilation
21 | {
22 | ///
23 | /// Creates customized adapters for Reflection.Emit objects.
24 | ///
25 | [CLSCompliant (false)]
26 | public interface IILGeneratorFactory
27 | {
28 | IILGenerator CreateAdaptedILGenerator (ILGenerator realILGenerator);
29 | }
30 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/NullDebugInfoGenerator.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 |
18 | using System;
19 | using Remotion.TypePipe.Dlr.Runtime.CompilerServices;
20 |
21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit
22 | {
23 | ///
24 | /// Implements the null object pattern for .
25 | ///
26 | public class NullDebugInfoGenerator : DebugInfoGenerator
27 | {
28 | public static readonly NullDebugInfoGenerator Instance = new NullDebugInfoGenerator();
29 |
30 | private NullDebugInfoGenerator ()
31 | {
32 | }
33 |
34 | public override void MarkSequencePoint (Dlr.Ast.LambdaExpression method, int ilOffset, Dlr.Ast.DebugInfoExpression sequencePoint)
35 | {
36 | }
37 | }
38 | }
--------------------------------------------------------------------------------
/Core/CodeGeneration/ReflectionEmit/NullExpressionPreparer.cs:
--------------------------------------------------------------------------------
1 | // Copyright (c) rubicon IT GmbH, www.rubicon.eu
2 | //
3 | // See the NOTICE file distributed with this work for additional information
4 | // regarding copyright ownership. rubicon licenses this file to you under
5 | // the Apache License, Version 2.0 (the "License"); you may not use this
6 | // file except in compliance with the License. You may obtain a copy of the
7 | // License at
8 | //
9 | // http://www.apache.org/licenses/LICENSE-2.0
10 | //
11 | // Unless required by applicable law or agreed to in writing, software
12 | // distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
13 | // WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
14 | // License for the specific language governing permissions and limitations
15 | // under the License.
16 | //
17 | using System;
18 | using Remotion.TypePipe.Dlr.Ast;
19 | using Remotion.Utilities;
20 |
21 | namespace Remotion.TypePipe.CodeGeneration.ReflectionEmit
22 | {
23 | ///
24 | /// An implementation of that just returns the body.
25 | ///
26 | public class NullExpressionPreparer : IExpressionPreparer
27 | {
28 | public Expression PrepareBody (CodeGenerationContext context, Expression body)
29 | {
30 | ArgumentUtility.CheckNotNull ("context", context);
31 | ArgumentUtility.CheckNotNull ("body", body);
32 |
33 | return body;
34 | }
35 | }
36 | }
--------------------------------------------------------------------------------
/Core/Dlr/Compiler/AnalyzedTree.cs:
--------------------------------------------------------------------------------
1 | /* ****************************************************************************
2 | *
3 | * Copyright (c) Microsoft Corporation.
4 | *
5 | * This source code is subject to terms and conditions of the Apache License, Version 2.0. A
6 | * copy of the license can be found in the License.html file at the root of this distribution. If
7 | * you cannot locate the Apache License, Version 2.0, please send an email to
8 | * dlr@microsoft.com. By using this source code in any fashion, you are agreeing to be bound
9 | * by the terms of the Apache License, Version 2.0.
10 | *
11 | * You must not remove this notice, or any other, from this software.
12 | *
13 | *
14 | * ***************************************************************************/
15 |
16 | using System;
17 | using System.Collections.Generic;
18 | using Remotion.TypePipe.Dlr.Runtime.CompilerServices;
19 |
20 | #if TypePipe
21 | namespace Remotion.TypePipe.Dlr.Ast.Compiler {
22 | #else
23 | namespace System.Linq.Expressions.Compiler {
24 | #endif
25 | internal sealed class AnalyzedTree {
26 | internal readonly Dictionary