diff --git a/src/kiss/Macros.hx b/src/kiss/Macros.hx index bf7f11f..a02dd2e 100644 --- a/src/kiss/Macros.hx +++ b/src/kiss/Macros.hx @@ -1465,6 +1465,23 @@ class Macros { // Prelude.print(Reader.toString(exp.def)); exp; }; + + k.doc("importWithDefAlias", 0, 0, '(importWithDefAlias)'); + macros["importWithDefAlias"] = (_, _, k:KissState) -> { + k.specialForms.remove("import"); + k.macros["import"] = (wholeExp:ReaderExp, args:Array, k:KissState) -> { + var b = wholeExp.expBuilder(); + var type = switch (args[0].def) { + case Symbol(typeName): + typeName; + default: + throw KissError.fromExp(wholeExp, "the only argument to (import) when using (importWithDefAlias) should be a symbol of a type path"); + }; + var baseType = type.split(".").pop(); + b.callSymbol("defAlias", [b.meta("type", b.symbol(baseType)), args[0]]); + }; + null; + }; k.doc("typeCase", 2, null, "(typeCase [] ([: ] ) (otherwise ))"); macros["typeCase"] = (wholeExp:ReaderExp, args:Array, k:KissState) -> {