From 739afb8dc69653d7b7d31b99724aa28e76a7df79 Mon Sep 17 00:00:00 2001 From: itsumura-h <39766805+itsumura-h@users.noreply.github.com> Date: Sun, 5 Sep 2021 01:03:05 +0900 Subject: [PATCH] empty interface (#3) --- interface_implements.nimble | 2 +- src/interface_implements.nim | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/interface_implements.nimble b/interface_implements.nimble index 6c3742f..824fb75 100644 --- a/interface_implements.nimble +++ b/interface_implements.nimble @@ -1,6 +1,6 @@ # Package -version = "0.2.1" +version = "0.2.2" author = "dumblepy" description = "Creating toInterface macro." license = "MIT" diff --git a/src/interface_implements.nim b/src/interface_implements.nim index b2408b7..2bc474c 100644 --- a/src/interface_implements.nim +++ b/src/interface_implements.nim @@ -4,6 +4,8 @@ macro implements*(implName, interfaceName, procs:untyped):untyped = let procsStr = procs.repr var tuples = "" for i, aProc in procs: + if aProc.repr == "discard": + break var args: seq[string] var anonimousProcArgs: seq[string] let procName = aProc[0] @@ -21,7 +23,13 @@ macro implements*(implName, interfaceName, procs:untyped):untyped = var tupleRow = fmt" {procName.repr}: proc({anonimousProcArgsStr}){returnType} = self.{procName.repr}({argPart})" if i != 0: tuples.add(",\n") tuples.add(tupleRow) - let resultStr = fmt"""proc toInterface*(self:{implName.repr}):{interfaceName.repr} = + let resultStr = + if tuples.len == 0: + fmt"""proc toInterface*(self:{implName.repr}):{interfaceName.repr} = + return () +""" + else: + fmt"""proc toInterface*(self:{implName.repr}):{interfaceName.repr} = return ( {tuples} )