This is the mail archive of the kawa@sourceware.org mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

compilation error when apply macro in the same module


I write macro for simplify define namespace:

(import-class com.sun.star.uno.UnoRuntime) =>
(define-namespace UnoRuntime import-class com.sun.star.uno.UnoRuntime)

(import-class com.sun.star.beans.PropertyValue with-array)  =>
(begin
  (define-namespace UnoRuntime import-class com.sun.star.uno.UnoRuntime)
  (define-namespace UnoRuntime[] import-class com.sun.star.uno.UnoRuntime[]))

macro:
(define-syntax import-class
  (lambda (form)
    (syntax-case form (with-array)
      ((_ name)
       #`(define-namespace ,(string->symbol
			     (let ((str (symbol->string (syntax-object->datum #'name))))
			       (str:substring (+ 1 (str:lastIndexOf "."))))) name))
      ((_ name with-array)
       (let* ((sName (symbol->string (syntax-object->datum #'name)))
	      (sArrName (sName:concat "[]"))
	      (sNamespace (sName:substring (+ 1 (sName:lastIndexOf "."))))
	      (sArrNamespace (sNamespace:concat "[]")))
	 #`(begin
	     (define-namespace ,(string->symbol sNamespace) name)
	     (define-namespace ,(string->symbol sArrNamespace)
,(string->symbol sArrName))))))))

In repl both macro is work, but when I compile this module - I get error:

$ kawaOO -C OObridge.scm
java.lang.NullPointerException
        at gnu.expr.ReferenceExp.apply(ReferenceExp.java:142)
        at gnu.mapping.CallContext.runUntilDone(CallContext.java:251)
        at gnu.mapping.CallContext.getFromContext(CallContext.java:280)
        at gnu.expr.Expression.eval(Expression.java:24)
        at gnu.expr.ApplyExp.apply(ApplyExp.java:63)
        at gnu.kawa.functions.GetNamedExp.apply(GetNamedPart.java:363)
        at gnu.mapping.CallContext.runUntilDone(CallContext.java:251)
        at gnu.mapping.CallContext.getFromContext(CallContext.java:280)
        at gnu.expr.Expression.eval(Expression.java:24)
        at gnu.expr.ApplyExp.apply(ApplyExp.java:63)
        at gnu.mapping.CallContext.runUntilDone(CallContext.java:251)
        at gnu.mapping.CallContext.getFromContext(CallContext.java:280)
        at gnu.expr.Expression.eval(Expression.java:24)
        at gnu.expr.LetExp.apply(LetExp.java:52)
        at gnu.expr.LetExp.apply(LetExp.java:64)
        at gnu.expr.LetExp.apply(LetExp.java:64)
        at gnu.expr.IfExp.apply(IfExp.java:34)
        at gnu.mapping.CallContext.runUntilDone(CallContext.java:251)
        at gnu.mapping.CallContext.getFromContext(CallContext.java:280)
        at gnu.expr.Expression.eval(Expression.java:24)
        at gnu.expr.BlockExp.apply(BlockExp.java:46)
        at gnu.mapping.CallContext.runUntilDone(CallContext.java:251)
        at gnu.mapping.CallContext.getFromContext(CallContext.java:280)
        at gnu.expr.Expression.eval(Expression.java:24)
        at gnu.expr.BlockExp.apply(BlockExp.java:54)
        at gnu.expr.LetExp.apply(LetExp.java:64)
        at gnu.expr.Closure.apply(LambdaExp.java:1957)
        at gnu.mapping.CallContext.runUntilDone(CallContext.java:251)
        at gnu.mapping.CallContext.runUntilValue(CallContext.java:315)
        at gnu.mapping.MethodProc.applyN(MethodProc.java:105)
        at gnu.mapping.ProcedureN.apply1(ProcedureN.java:31)
        at kawa.lang.Macro.expand(Macro.java:178)
        at kawa.lang.Macro.scanForm(Macro.java:206)
        at kawa.lang.Translator.scanForm(Translator.java:1012)
        at gnu.kawa.lispexpr.LispLanguage.parse(LispLanguage.java:69)
        at gnu.expr.Language.parse(Language.java:487)
        at gnu.expr.Language.parse(Language.java:463)
        at kawa.repl.compileFiles(repl.java:750)
        at kawa.repl.processArgs(repl.java:444)
        at kawa.repl.main(repl.java:853)
(compiling OObridge.scm)
OObridge.scm:64:1: evaluating syntax transformer 'import-class' threw
java.lang.NullPointerException

Where am I wrong?

Thanks!

-- 
WBR, Yaroslav Kavenchuk.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]