Skip to content

Commit

Permalink
Tool to check module names
Browse files Browse the repository at this point in the history
  • Loading branch information
lucteo committed May 12, 2019
1 parent d3fe943 commit 6904360
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 4 deletions.
2 changes: 1 addition & 1 deletion SparrowImplicitLib/sprCore/basicDecls.spr
Original file line number Diff line number Diff line change
Expand Up @@ -664,7 +664,7 @@ datatype StringRef
fun popBack(this: @StringRef, n: SizeType) { end := ptrSub(end, n); }

fun subrange(this: @StringRef, index: SizeType, num: SizeType): StringRef
return StringRef(ptrAdd(begin, index), ptrAdd(begin, num))
return StringRef(ptrAdd(begin, index), ptrAdd(begin, index+num))

fun cStr(this: @StringRef): @Char = reinterpretCast(@Char, begin)

Expand Down
2 changes: 1 addition & 1 deletion SparrowImplicitLib/std/sortedMap.spr
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
module std.sortedPtr
module std.sortedMap

import sortedTable(SortedTable)
import tuple(Tuple, PairFirst, PairSecond)
Expand Down
42 changes: 42 additions & 0 deletions tools/checks/moduleName.spr
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
module formatTool.checks.moduleName

import formatDetails.sourceData

fun checkModuleName(src: @SourceData)
var node = src.rootNode
if node.isNull
return
var modName = (node children)(0)
if modName.isNull
return
var name = _getLastNameInQid(modName)
var filename = src.filename.asStringRef
var sz = filename.size
if sz > 4 //&& filename.subrange(sz-4, 4) == '.spr'
filename.popBack(4)
sz -= 4
if sz >= name.size
filename = filename.subrange(sz-name.size, name.size)
if !_caseInsensitiveCompare(name, filename)
reportWarning(node location, "Module name: '", name, "' doesn't match filename: '", src.filename, "'")

fun _getLastNameInQid(node: Node): StringRef
var nk = node kind
if nk == nkIdentifier
return node name
else if nk == nkCompoundExpr
var id = (node children)(1)
if id.isNull
return ''
return id name

fun _caseInsensitiveCompare(lhs, rhs: StringRef): Bool
if lhs.size != rhs.size
return false
var sz: Int = lhs.size
for i=0..sz
if (Int(lhs(i)) _tolower) != (Int(rhs(i)) _tolower)
return false
return true

[native("tolower")] fun _tolower(c: Int): Int
5 changes: 5 additions & 0 deletions tools/formatDetails/consoleErrorReporter.spr
Original file line number Diff line number Diff line change
Expand Up @@ -36,5 +36,10 @@ fun reportWarning(loc: @Location, m1, m2, m3, m4: AnyType)
cout << loc << ' '
cout << 'WARNING: ' << m1 << m2 << m3 << m4 << '\n'

fun reportWarning(loc: @Location, m1, m2, m3, m4, m5: AnyType)
if loc.end.line > 1 || loc.end.col > 1
cout << loc << ' '
cout << 'WARNING: ' << m1 << m2 << m3 << m4 << m5 << '\n'

fun reportError(this: @ConsoleErrorReporter, loc: @Location, msg: StringRef)
reportError(loc, msg)
7 changes: 5 additions & 2 deletions tools/formatTool.spr
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
import formatDetails.sourceData
import transforms.emptyTransform, transforms.defaultFormat, transforms.refToMut
import transforms.useLayout, transforms.removeEolSemicolons
import checks.returnStmt
import checks.returnStmt, checks.moduleName

import os

Expand Down Expand Up @@ -34,7 +34,9 @@ fun sprMain
else if arg == '-i' ; inPlace = true
else if arg == '-check'
checks += \checkReturnInFunctions
checks += \checkModuleName
else if arg == '-c=return' ; checks += \checkReturnInFunctions
else if arg == '-c=modName' ; checks += \checkModuleName
else if arg == '-printAst' ; doPrintAst = true
else if arg.size > 0 && arg(0) == '-'.char
// This looks like a flag, but we don't recognize it
Expand Down Expand Up @@ -123,6 +125,7 @@ fun _getCommentContent(tokenStr: StringRef): StringRef
res popBack
return res

//<<<File scanning test(-format ../SparrowImplicitLib/std/ranges.spr)
// <<<File scanning test(-format ../SparrowImplicitLib/std/ranges.spr)
//<<<File scanning test(-check ../tests/Basic/Basic.spr)
// <<<File scanning test(-format -i ../tests/StdLib/RangesTest.spr)
// <<<File scanning test(-f=ref-to-mut ../SparrowImplicitLib/std/ranges.spr)

0 comments on commit 6904360

Please sign in to comment.