mirror of
https://github.com/ethereum/solidity
synced 2023-10-03 13:03:40 +00:00
Remove the \b, \f, \v escape sequences from the Scanner
This commit is contained in:
@@ -131,10 +131,29 @@ BOOST_AUTO_TEST_CASE(string_escapes)
|
||||
|
||||
BOOST_AUTO_TEST_CASE(string_escapes_all)
|
||||
{
|
||||
Scanner scanner(CharStream(" { \"a\\x61\\b\\f\\n\\r\\t\\v\"", ""));
|
||||
Scanner scanner(CharStream(" { \"a\\x61\\n\\r\\t\"", ""));
|
||||
BOOST_CHECK_EQUAL(scanner.currentToken(), Token::LBrace);
|
||||
BOOST_CHECK_EQUAL(scanner.next(), Token::StringLiteral);
|
||||
BOOST_CHECK_EQUAL(scanner.currentLiteral(), "aa\b\f\n\r\t\v");
|
||||
BOOST_CHECK_EQUAL(scanner.currentLiteral(), "aa\n\r\t");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(string_escapes_legal_before_080)
|
||||
{
|
||||
Scanner scanner(CharStream(" { \"a\\b", ""));
|
||||
BOOST_CHECK_EQUAL(scanner.currentToken(), Token::LBrace);
|
||||
BOOST_CHECK_EQUAL(scanner.next(), Token::Illegal);
|
||||
BOOST_CHECK_EQUAL(scanner.currentError(), ScannerError::IllegalEscapeSequence);
|
||||
BOOST_CHECK_EQUAL(scanner.currentLiteral(), "");
|
||||
scanner.reset(CharStream(" { \"a\\f", ""));
|
||||
BOOST_CHECK_EQUAL(scanner.currentToken(), Token::LBrace);
|
||||
BOOST_CHECK_EQUAL(scanner.next(), Token::Illegal);
|
||||
BOOST_CHECK_EQUAL(scanner.currentError(), ScannerError::IllegalEscapeSequence);
|
||||
BOOST_CHECK_EQUAL(scanner.currentLiteral(), "");
|
||||
scanner.reset(CharStream(" { \"a\\v", ""));
|
||||
BOOST_CHECK_EQUAL(scanner.currentToken(), Token::LBrace);
|
||||
BOOST_CHECK_EQUAL(scanner.next(), Token::Illegal);
|
||||
BOOST_CHECK_EQUAL(scanner.currentError(), ScannerError::IllegalEscapeSequence);
|
||||
BOOST_CHECK_EQUAL(scanner.currentLiteral(), "");
|
||||
}
|
||||
|
||||
BOOST_AUTO_TEST_CASE(string_escapes_with_zero)
|
||||
|
||||
@@ -0,0 +1,10 @@
|
||||
contract test {
|
||||
function f() public pure returns (bytes32) {
|
||||
bytes32 escapeCharacters = "\t\n\r\'\"\\";
|
||||
return escapeCharacters;
|
||||
}
|
||||
}
|
||||
// ====
|
||||
// compileViaYul: also
|
||||
// ----
|
||||
// f() -> 0x090a0d27225c0000000000000000000000000000000000000000000000000000
|
||||
@@ -0,0 +1,8 @@
|
||||
contract test {
|
||||
function f() public pure returns (bytes32) {
|
||||
bytes32 escapeCharacters = "\t\b\f";
|
||||
return escapeCharacters;
|
||||
}
|
||||
}
|
||||
// ----
|
||||
// ParserError 8936: (100-105): Invalid escape sequence.
|
||||
@@ -1,6 +1,6 @@
|
||||
contract test {
|
||||
function f() public pure returns (bytes32) {
|
||||
bytes32 escapeCharacters = "\t\b\n\r\f\'\"\\\b";
|
||||
bytes32 escapeCharacters = "\n\r\'\"\\";
|
||||
return escapeCharacters;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user