rtc icon indicating copy to clipboard operation
rtc copied to clipboard

Allow annotations on modules

Open jtoman opened this issue 13 years ago • 2 comments

Currently Rtc allows only the annotation of classes. It should also allow the annotation of modules. This will also let us do the following:

class IncluderClass
    include :module1,:module2,...
end

The includes will look up the modules, and for each module add the method annotations of that module to the current class (or theoretically, another module). Different handling for conflicting signatures will be required for this to work. That is, if module Foo defines a method bar with some signature sig1 and class A also defines bar with signature sig2, and A includes Foo, then the signatures sig1 and sig2 should not be automatically intersected, but rather the signature from A should overwrite the signature from Foo.

jtoman avatar Mar 08 '12 20:03 jtoman

self annotations on modules currently work. In addition it'd be nice if we could use modules as names in the grammar, so that a method would accept only objects whose class includes the some specified module (see the set class for a use case for this).

jtoman avatar Oct 01 '12 22:10 jtoman

A neat feature would allow polymorphic mixins. Something like this:

module MyPolymorphicMethods
   rtc_annotated [:t]
   typesig("test_element: (t) -> %bool")
   # ....
end
class Foo
   rtc_annotated [:k, :each_key]
   include MyPolymorphicMethods
   rtc_includes :MyPolymorphicMethods, :t => :k
end

Which would include all the methods from MyPolymorphicMethods but replace all instances of t in the typesigs with k

jtoman avatar Nov 18 '12 17:11 jtoman