[Ironruby-core] Implementation plan and a string question...

John Messerly jomes at microsoft.com
Fri Nov 9 20:53:10 EST 2007


John Lam:

>
> Lee Culver:
>
> > Lastly, I see the following in the code base: /*!*/.  For example:
> >
> >         public MutableString/*!*/ Append(string/*!*/ str, int
> > startIndex, int charCount) {
> >
>
> These are the Spec# annotations. There is a wiki with some info on
> Spec#:
>
> http://channel9.msdn.com/wiki/default.aspx/SpecSharp.HomePage
> http://channel9.msdn.com/wiki/default.aspx/SpecSharp.SpecSharpAttribute
> s
>
> Research papers are available on
> http://research.microsoft.com/specsharp.
>

And, in particular, the /*!*/ means "should never be null". Common things that can't be null are CodeContext arguments, and the "self" argument in most library methods (however if you're implementing a Module, self can be null, e.g. class NilClass; include MyModule; end; nil.my_module_method)

The /*!*/ is only processed by Spec#, and should not be confused with the [NotNull] attribute that you can use to tell the DLR MethodBinder that null isn't allowed for that argument.

- John



More information about the Ironruby-core mailing list