Add special case for XCTAssert family of functions

Normally, we don’t want Splash to contain too many special cases for
individual symbol names — but the `XCTAssert` family of functions are
so common that it warrants it. The problem is that Splash would currently
highlight those functions as types, since they are capitalized, which
has now been changed to function calls instead.
This commit is contained in:
John Sundell 2019-03-08 19:14:18 +01:00
parent f9ad32a0a6
commit 9fbdb92edb
2 changed files with 18 additions and 1 deletions

View File

@ -256,6 +256,13 @@ private extension SwiftGrammar {
return false
}
// The XCTAssert family of functions is a bit of an edge case,
// since they start with capital letters. Since they are so
// commonly used, we'll add a special case for them here:
guard !segment.tokens.current.starts(with: "XCTAssert") else {
return false
}
// In a generic declaration, only highlight constraints
if segment.tokens.previous.isAny(of: "<", ",") {
var foundOpeningBracket = false

View File

@ -130,6 +130,15 @@ final class FunctionCallTests: SyntaxHighlighterTestCase {
])
}
func testXCTAssertCalls() {
let components = highlighter.highlight("XCTAssertTrue(variable)")
XCTAssertEqual(components, [
.token("XCTAssertTrue", .call),
.plainText("(variable)")
])
}
func testAllTestsRunOnLinux() {
XCTAssertTrue(TestCaseVerifier.verifyLinuxTests((type(of: self)).allTests))
}
@ -146,7 +155,8 @@ extension FunctionCallTests {
("testAccessingPropertyAfterFunctionCallWithArguments", testAccessingPropertyAfterFunctionCallWithArguments),
("testCallingStaticMethodOnGenericType", testCallingStaticMethodOnGenericType),
("testPassingTypeToFunction", testPassingTypeToFunction),
("testPassingBoolToUnnamedArgument", testPassingBoolToUnnamedArgument)
("testPassingBoolToUnnamedArgument", testPassingBoolToUnnamedArgument),
("testXCTAssertCalls", testXCTAssertCalls)
]
}
}