So functions/methods are first class values in boo.
You can define a function 'spam':
def spam():
print 'spam! spam! spam!'
and then use it as an object. You can say, among other things:
a = spam
spam.Invoke()
spam.BeginInvoke({ print 'called back' }, null)
The runtime demands BeginInvoke to have the signature: (AsyncCallback, object).
Boo currently allows you to write simply:
spam.BeginInvoke()
This is the same as passing null for the other args, the compiler supports this
by overloading BeginInvoke on the underlying delegate definition.
Unfortunately, the latest .net 2.0 CTP does not like BeginInvoke
overloading anymore.
This leaves us with 3 options:
1) dropping BeginInvoke overloading entirely
2) using a different name for the BeginInvoke overloads
3) implement BeginInvoke overloading through inlining (removing the
overloads just before the emit step)
Right now, I'm going for 1 with a jira issue that reminds us to implement 3.
This only affects the .net 2.0 build.
Thoughts?
bamboo