Closed
Description
There are a number of holes in checking the use of byref values. I'm collecting these into one issue since if we fix any one of them we may as well go through and address them all.
Addressed:
- Compiler allows invalid uses of byref in interface methods Compiler allows invalid uses of byref in interface methods #127 (Related to No error on function with a invalid byref type parameter #5459)
- Tupling causes problems in argument poitions The generic type 'System.Tuple`2' was used with an invalid instantiation (likely byref issue) #3362 (Doesn't fail in Release, but dies in Debug)
- Base calls and byrefs: Base calls with byref arguments are not analyzed correctly #130
- Inlined tupled arguments and byrefs: Inlined Tuple'd arguments with byref<> cause Debug builds to crash at runtime #820 and F# System.TypeLoadException : The generic type 'System.Tuple`2' was used with an invalid instantiation in assembly #558
- Struct field returns Bug in byref-return checking: passing local struct address should not be permitted #1401
- Some uses of currying and byrefs: Currying and byref are not friends #819
I'll close the individual bug entries and reactivate if we don't fix them all in one go.