Sorry, Lucas! Â This was because I started the closure work in a Qwaq^H^H^H^HTeleplace image that lacked the pragma extensibility. Â So when it came to port the Closure compiler to other dialects I a) didn't notice the extensibility stuff and b) overwrite it.
No problem, I thought that there was a particular reason that it got removed.
So what to do? Â Please point me to/email me a change set of the pragma extensibility code and I will try to integrate it back into the closure compiler as soon as time allows.
These are the methods #primitive: and #primitive:module: that carry the <primitive> pragma to tell the compiler that these pragmas have to be considered during compilation: Parser>>primitive: anIntegerOrString "Create indexed primitive." <primitive> ^ anIntegerOrString isInteger ifTrue: [ anIntegerOrString ] ifFalse: [ anIntegerOrString isString ifTrue: [ self primitive: anIntegerOrString module: nil ] ifFalse: [ self expected: 'Indexed primitive' ] ] Parser>>primitive: aNameString module: aModuleStringOrNil "Create named primitive." <primitive> (aNameString isString and: [ aModuleStringOrNil isNil or: [ aModuleStringOrNil isString ] ]) ifFalse: [ ^ self expected: 'Named primitive' ]. self allocateLiteral: (Array with: (aModuleStringOrNil isNil ifFalse: [ aModuleStringOrNil asSymbol ]) with: aNameString asSymbol with: 0 with: 0). ^ 117 Then the primitive are setup from ... Parser>>pragmaPrimitives | pragmas primitives | self properties pragmas isEmpty ifTrue: [ ^ 0 ]. pragmas := Pragma allNamed: #primitive from: self class to: Parser. primitives := self properties pragmas select: [ :prim | pragmas anySatisfy: [ :prag | prag selector = prim keyword ] ]. primitives isEmpty ifTrue: [ ^ 0 ]. primitives size = 1 ifFalse: [ ^ self notify: 'Ambigous primitives' ]. ^ primitives first message sendTo: self .. which in turn is called from Parser>>method: doit context: ctxt encoder: encoderToUse to calculate the primitive number. Maybe this wasn't the smartest idea after all? I made this so that FFI (and other libraries) could easily extend the range of possible primitive types, but since it was never used it is probably sort of pointless? Lukas -- Lukas Renggli http://www.lukas-renggli.ch