-
-
Notifications
You must be signed in to change notification settings - Fork 1.5k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
refs #19822 Fixes these bugs: * Style check violations in generics defined in foreign packages are raised. * Builtin pragma usage style check violations in foreign packages are raised. * User pragma definition style check violations are not raised. Co-authored-by: quantimnot <[email protected]>
- Loading branch information
1 parent
53c15f2
commit 365a753
Showing
6 changed files
with
73 additions
and
6 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
include ../thint |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,2 @@ | ||
# See `tstyleCheck` | ||
# Needed to mark `mstyleCheck` as a foreign package. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
discard """ | ||
matrix: "--errorMax:0 --styleCheck:error" | ||
action: compile | ||
""" | ||
|
||
import foreign_package/foreign_package | ||
|
||
# This call tests that: | ||
# - an instantiation of a generic in a foreign package doesn't raise errors | ||
# when the generic body contains: | ||
# - definition and usage violations | ||
# - builtin pragma usage violations | ||
# - user pragma usage violations | ||
# - definition violations in foreign packages are ignored | ||
# - usage violations in foreign packages are ignored | ||
genericProc[int]() |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,43 @@ | ||
discard """ | ||
matrix: "--styleCheck:hint" | ||
action: compile | ||
""" | ||
|
||
# Test violating ident definition: | ||
{.pragma: user_pragma.} #[tt.Hint | ||
^ 'user_pragma' should be: 'userPragma' [Name] ]# | ||
|
||
# Test violating ident usage style matches definition style: | ||
{.userPragma.} #[tt.Hint | ||
^ 'userPragma' should be: 'user_pragma' [template declared in thint.nim(7, 9)] [Name] ]# | ||
|
||
# Test violating builtin pragma usage style: | ||
{.no_side_effect.}: #[tt.Hint | ||
^ 'no_side_effect' should be: 'noSideEffect' [Name] ]# | ||
discard 0 | ||
|
||
# Test: | ||
# - definition style violation | ||
# - user pragma usage style violation | ||
# - builtin pragma usage style violation | ||
proc generic_proc*[T] {.no_destroy, userPragma.} = #[tt.Hint | ||
^ 'generic_proc' should be: 'genericProc' [Name]; tt.Hint | ||
^ 'no_destroy' should be: 'nodestroy' [Name]; tt.Hint | ||
^ 'userPragma' should be: 'user_pragma' [template declared in thint.nim(7, 9)] [Name] ]# | ||
# Test definition style violation: | ||
let snake_case = 0 #[tt.Hint | ||
^ 'snake_case' should be: 'snakeCase' [Name] ]# | ||
# Test user pragma definition style violation: | ||
{.pragma: another_user_pragma.} #[tt.Hint | ||
^ 'another_user_pragma' should be: 'anotherUserPragma' [Name] ]# | ||
# Test user pragma usage style violation: | ||
{.anotherUserPragma.} #[tt.Hint | ||
^ 'anotherUserPragma' should be: 'another_user_pragma' [template declared in thint.nim(31, 11)] [Name] ]# | ||
# Test violating builtin pragma usage style: | ||
{.no_side_effect.}: #[tt.Hint | ||
^ 'no_side_effect' should be: 'noSideEffect' [Name] ]# | ||
# Test usage style violation: | ||
discard snakeCase #[tt.Hint | ||
^ 'snakeCase' should be: 'snake_case' [let declared in thint.nim(28, 7)] [Name] ]# | ||
|
||
generic_proc[int]() |