I ran against a couple constraint bugs in SVN, but didn't want to report them separately, as constraints aren't quite finished. I have a couple test cases that fail for some odd reason.
This first case fails only if A is defined after Z. It doesn't matter if you use an intermediate class (as shown in the second block).
class B(A):
pass
class Z[of T(A)]():
pass
class A:
pass
Z[of B]()
class Z[of T(A)]():
pass
class A:
pass
Z[of A]()
Here's the error:
BCE0011: Boo.Lang.Compiler.CompilerError: An error occurred during the execution of the step 'Boo.Lang.Compiler.Steps.Em
itAssembly': 'Could not find a Type for A.'. ---> System.InvalidOperationException: Could not find a Type for A.
at Boo.Lang.Compiler.Steps.EmitAssembly.GetSystemType(IType tag) in c:\code\svnboo\src\Boo.Lang.Compiler\Steps\EmitAs
sembly.cs:line 4096
at Boo.Lang.Compiler.Steps.EmitAssembly.DefineGenericParameter(InternalGenericParameter parameter, GenericTypeParamet
erBuilder builder) in c:\code\svnboo\src\Boo.Lang.Compiler\Steps\EmitAssembly.cs:line 4503
at Boo.Lang.Compiler.Steps.EmitAssembly.DefineGenericParameters(GenericTypeParameterBuilder[] builders, GenericParame
terDeclaration[] declarations) in c:\code\svnboo\src\Boo.Lang.Compiler\Steps\EmitAssembly.cs:line 4494
at Boo.Lang.Compiler.Steps.EmitAssembly.DefineGenericParameters(TypeBuilder builder, GenericParameterDeclaration[] pa
rameters) in c:\code\svnboo\src\Boo.Lang.Compiler\Steps\EmitAssembly.cs:line 4472
at Boo.Lang.Compiler.Steps.EmitAssembly.DefineType(TypeDefinition typeDefinition) in c:\code\svnboo\src\Boo.Lang.Comp
iler\Steps\EmitAssembly.cs:line 4553
at Boo.Lang.Compiler.Steps.EmitAssembly.DefineTypes() in c:\code\svnboo\src\Boo.Lang.Compiler\Steps\EmitAssembly.cs:l
ine 218
at Boo.Lang.Compiler.Steps.EmitAssembly.Run() in c:\code\svnboo\src\Boo.Lang.Compiler\Steps\EmitAssembly.cs:line 192
at Boo.Lang.Compiler.CompilerPipeline.RunStep(CompilerContext context, ICompilerStep step) in c:\code\svnboo\src\Boo.
Lang.Compiler\CompilerPipeline.cs:line 311
— End of inner exception stack trace —
Partially implemented as of revision 2996.