Ticket #127 (closed defect: fixed)

Opened 9 years ago

Last modified 9 years ago

EnsureException when compiling nant-cobra-tasks

Reported by: gauthier Owned by: Chuck
Priority: major Milestone: Cobra 0.9
Component: Cobra Compiler Version: 0.8.0
Keywords: Cc:


checkout and

cobra -v:3 -compile -reveal-internal-exceptions -color -debug -timeit -target:lib -ref:lib\nant-0.86-beta1\NAnt.Core.dll -ref:lib\nant-0.86-beta1\NAnt.DotnetTasks.dll -out:build\NAnt.CobraTasks.dll src\CobraTask.cobra


log.7z Download (3.8 KB) - added by gauthier 9 years ago.

Change History

Changed 9 years ago by gauthier

Changed 9 years ago by Chuck

  • owner set to Chuck
  • status changed from new to accepted

Changed 9 years ago by Chuck

I don't have time to finish this up now, but some notes to self:

Cobra does a _prepLibraryBox on "AssemblyFileSet" which calls .bindInh which calls .bindInh on "FileSet" which does:

for box in .nestedBoxes, box.bindInh

Which does .bindInh on "Include" which does .bindBase which does:

possible = _baseNode.realType

which eventually does:

class ClrTypeProxy
declaringType = _realType(clrType.declaringType to !)
declaringType.bindInh  # trigger scanning the clr type if needed

which leads to the circularity.

Looking in Reflector, the FileSet class has two nested classes, Include and Exclude. Include inherits from Exclude and the resolution of that inheritance triggers a .bindInh on the declaring class (FileSet) which was already in .bindInh.

Should be able to reproduce this in a small example using C# and get the same error. (Cobra doesn't support declaring nested classes yet.) Need this for the regression test suite.

Changed 9 years ago by Chuck

  • status changed from accepted to closed
  • resolution set to fixed

Fixed in changset:1892

Note: See TracTickets for help on using tickets.