projects
/
mono.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
[mcs] Better detection of null operator inside conditional expression. Fixes #57232
[mono.git]
/
mcs
/
mcs
/
cs-tokenizer.cs
diff --git
a/mcs/mcs/cs-tokenizer.cs
b/mcs/mcs/cs-tokenizer.cs
index e6a95fe8163a3590acb9f23602cc10d4cdec63dd..1be3309b1bfdd611d404408e743e0414f81f2860 100644
(file)
--- a/
mcs/mcs/cs-tokenizer.cs
+++ b/
mcs/mcs/cs-tokenizer.cs
@@
-893,6
+893,16
@@
namespace Mono.CSharp
if (parsing_block == 0)
res = -1;
if (parsing_block == 0)
res = -1;
+ break;
+ case Token.THROW:
+ switch (current_token) {
+ case Token.ARROW:
+ case Token.OP_COALESCING:
+ case Token.INTERR:
+ res = Token.THROW_EXPR;
+ break;
+ }
+
break;
}
break;
}
@@
-1267,7
+1277,8
@@
namespace Mono.CSharp
else if (the_token == Token.INTERR_NULLABLE || the_token == Token.STAR)
goto again;
else if (the_token == Token.OP_GENERICS_LT) {
else if (the_token == Token.INTERR_NULLABLE || the_token == Token.STAR)
goto again;
else if (the_token == Token.OP_GENERICS_LT) {
- if (!parse_less_than (ref genericDimension))
+ int unused = 0;
+ if (!parse_less_than (ref unused))
return false;
goto again;
} else if (the_token == Token.OPEN_BRACKET) {
return false;
goto again;
} else if (the_token == Token.OPEN_BRACKET) {
@@
-1314,7
+1325,8
@@
namespace Mono.CSharp
}
if (d == '.') {
}
if (d == '.') {
- return Token.INTERR_OPERATOR;
+ d = reader.Peek ();
+ return d >= '0' && d <= '9' ? Token.INTERR : Token.INTERR_OPERATOR;
}
if (d != ' ') {
}
if (d != ' ') {
@@
-1344,6
+1356,7
@@
namespace Mono.CSharp
case Token.THIS:
case Token.NEW:
case Token.INTERPOLATED_STRING:
case Token.THIS:
case Token.NEW:
case Token.INTERPOLATED_STRING:
+ case Token.THROW:
next_token = Token.INTERR;
break;
next_token = Token.INTERR;
break;