The normal behaviour of adding a CompiledNameAttribute to a member declaration is that the F# compiler changes its name and puts a CompilationSourceNameAttribute in its place that indicates the F# name of the member.
However, decompiling FSharp.Core made me notice the following strange code being generated for ExtraTopLevelOperators.async :
public static FSharpAsyncBuilder DefaultAsyncBuilder
It is the only declaration in this module that carries the original CompiledNameAttribute. I tried building FSharp.Core in my own machine and got identical results. There is no apparent difference between the async declaration that fails and the others that
work. This looks like a compiler bug, though it is not clear to me what is to blame.
This behaviour seems to be occurring consistently with annotated types. Is this intentional? Or a bug?