diff options
| author | Ganesh Viswanathan <dev@genotrance.com> | 2019-01-31 19:43:32 -0600 |
|---|---|---|
| committer | Ganesh Viswanathan <dev@genotrance.com> | 2019-01-31 19:43:32 -0600 |
| commit | 4152564b398d1cc9214281d274e332d8e4d48012 (patch) | |
| tree | 2e072952c318b9057c667aa85dfa9f1bbc4f7be4 | |
| parent | 013c925490fa0a524169e557d2bf5936360e5ee9 (diff) | |
| download | nimterop-4152564b398d1cc9214281d274e332d8e4d48012.tar.gz nimterop-4152564b398d1cc9214281d274e332d8e4d48012.zip | |
Fix #95 - error for multiple underscores
| -rw-r--r-- | nimterop/getters.nim | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/nimterop/getters.nim b/nimterop/getters.nim index 42dc9f9..9d8da6e 100644 --- a/nimterop/getters.nim +++ b/nimterop/getters.nim @@ -87,16 +87,25 @@ proc getType*(str: string): string = if gTypeMap.hasKey(result): result = gTypeMap[result] -template checkUnderscores(name, errmsg: string): untyped = +proc checkIdentifier(name, kind, parent, origName: string) = + let + parentStr = if parent.nBl: parent & ":" else: "" + if name.len != 0: - doAssert name[0] != '_' and name[^1] != '_', errmsg + let + origStr = if name != origName: ", originally '{origName}' before 'cPlugin:onSymbol()', still" else: "" + errmsg = &"Identifier '{parentStr}{name}' ({kind}){origStr} contains" + + doAssert name[0] != '_' and name[^1] != '_', errmsg & " leading/trailing underscores '_'" + + doAssert (not name.contains(re"_[_]+")): errmsg & " more than one consecutive underscore '_'" + + if parent.nBl: + doAssert name.nBl, &"Blank identifier, originally '{parentStr}{name}' ({kind}), cannot be empty" proc getIdentifier*(name: string, kind: NimSymKind, parent=""): string = doAssert name.len != 0, "Blank identifier error" - let - parentStr = if parent.nBl: parent & ":" else: "" - if name notin gStateRT.symOverride or parent.nBl: if gStateRT.onSymbol != nil: var @@ -104,13 +113,10 @@ proc getIdentifier*(name: string, kind: NimSymKind, parent=""): string = gStateRT.onSymbol(sym) result = sym.name - checkUnderscores(result, &"Identifier '{parentStr}{name}' ({kind}) still contains leading/trailing underscores '_' after 'cPlugin:onSymbol()': result '{result}'") - - if parent.nBl: - doAssert result.nBl, &"Blank identifier, originally '{parentStr}{name}' ({kind}), cannot be empty" else: result = name - checkUnderscores(result, &"Identifier '{parentStr}{result}' ({kind}) contains unsupported leading/trailing underscores '_': use 'cPlugin:onSymbol()' to remove") + + checkIdentifier(result, $kind, parent, name) if result in gReserved: result = &"`{result}`" |
