postsharp / Metalama

Metalama is a Roslyn-based meta-programming framework. Use this repo to report bugs or ask questions.
176 stars 5 forks source link

EligibilityExtensions.MustBe throws NotSupportedException #187

Closed gfraiteur closed 1 year ago

gfraiteur commented 1 year ago

Here is the exception message:

System.NotSupportedException: This instance of Type cannot be accessed at compile time because it represents a run-time object. Try using meta.RunTime() to convert this object to its run-time value.
   at Metalama.Framework.Engine.ReflectionMocks.CompileTimeType.get_UnderlyingSystemType()
   at System.RuntimeType.IsAssignableFrom(Type c)
   at Metalama.Framework.Eligibility.EligibilityExtensions.GetInterfaceName(Type type)
   at Metalama.Framework.Eligibility.EligibilityExtensions.<>c__DisplayClass42_0.<MustBe>b__1(IDescribedObject`1 member)
   at Metalama.Framework.Eligibility.Implementation.EligibilityRule`1.GetIneligibilityJustification(EligibleScenarios requestedEligibility, IDescribedObject`1 describedObject)
   at Metalama.Framework.Eligibility.Implementation.AndEligibilityRule`1.GetIneligibilityJustification(EligibleScenarios requestedEligibility, IDescribedObject`1 describedObject)
   at Metalama.Framework.Eligibility.Implementation.CastEligibilityRule`2.GetIneligibilityJustification(EligibleScenarios requestedEligibility, IDescribedObject`1 describedObject)
   at Metalama.Framework.Eligibility.Implementation.AndEligibilityRule`1.GetIneligibilityJustification(EligibleScenarios requestedEligibility, IDescribedObject`1 describedObject)
   at Metalama.Framework.Engine.Aspects.AspectClass.<>c__DisplayClass65_0.<GetIneligibilityJustification>b__2()
   at Metalama.Framework.Engine.Utilities.UserCode.UserCodeFuncAdapter`1.Func(UserCodeFuncAdapter`1& payload)
   at Metalama.Framework.Engine.Utilities.UserCode.UserCodeInvoker.Invoke[TResult,TPayload](UserCodeFunc`2 func, TPayload& payload, UserCodeExecutionContext context)
   at Metalama.Framework.Engine.Utilities.UserCode.UserCodeInvoker.Invoke[T](Func`1 func, UserCodeExecutionContext context)
   at Metalama.Framework.Engine.Aspects.AspectClass.GetIneligibilityJustification(EligibleScenarios requestedEligibility, IDescribedObject`1 describedObject)
   at Metalama.Framework.Engine.Aspects.CompilationAspectSource.<>c__DisplayClass7_0.<GetAspectInstances>b__0(IAttribute attribute)
   at System.Linq.Enumerable.WhereSelectEnumerableIterator`2.MoveNext()
   at System.Linq.Enumerable.WhereEnumerableIterator`1.MoveNext()
   at System.Linq.Enumerable.SelectManySingleSelectorIterator`2.MoveNext()
   at System.Linq.Enumerable.SelectEnumerableIterator`2.MoveNext()
   at System.Linq.Enumerable.WhereEnumerableIterator`1.ToList()
   at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
   at Metalama.Framework.Engine.Pipeline.PipelineStepsState.ExecuteAspectSource(CompilationModel compilation, IAspectClass aspectClass, IEnumerable`1 aspectSources, CancellationToken cancellationToken)
   at Metalama.Framework.Engine.Pipeline.EvaluateAspectSourcesPipelineStep.ExecuteAsync(CompilationModel compilation, Int32 stepIndex, CancellationToken cancellationToken)
   at Metalama.Framework.Engine.Pipeline.PipelineStepsState.ExecuteAsync(CancellationToken cancellationToken)
   at Metalama.Framework.Engine.Pipeline.HighLevelPipelineStage.ExecuteAsync(AspectPipelineConfiguration pipelineConfiguration, AspectPipelineResult input, IDiagnosticAdder diagnostics, TestableCancellationToken cancellationToken)
   at Metalama.Framework.Engine.Pipeline.AspectPipeline.ExecuteAsync(PartialCompilation compilation, CompilationModel compilationModel, IDiagnosticAdder diagnosticAdder, AspectPipelineConfiguration pipelineConfiguration, TestableCancellationToken cancellationToken)
   at Metalama.Framework.Engine.Pipeline.CompileTime.CompileTimeAspectPipeline.ExecuteCoreAsync(IDiagnosticAdder diagnosticAdder, PartialCompilation compilation, ImmutableArray`1 resources, AspectPipelineConfiguration configuration, TestableCancellationToken cancellationToken)
   at Metalama.Framework.Engine.Pipeline.CompileTime.CompileTimeAspectPipeline.ExecuteAsync(IDiagnosticAdder diagnosticAdder, Compilation compilation, ImmutableArray`1 resources, TestableCancellationToken cancellationToken)
PostSharpBot commented 1 year ago

Hello @gfraiteur, thank you for submitting this issue. We will try to get back to you as soon as possible. Note to the PostSharp team, this ticket is being tracked in our dashboard under ID TP-33570.

gfraiteur commented 1 year ago

Solved in 2023.3.1-preview.