X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=mcs%2Fmcs%2Fcs-tokenizer.cs;h=1be3309b1bfdd611d404408e743e0414f81f2860;hb=522d0276630d843944e57522f96e2613913452cd;hp=cd7ce1ac68fe34b998cd241d6f2d6783873866ea;hpb=14f8acced5bbb2f6d55fb3e7800382700bcc65eb;p=mono.git diff --git a/mcs/mcs/cs-tokenizer.cs b/mcs/mcs/cs-tokenizer.cs index cd7ce1ac68f..1be3309b1bf 100644 --- 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; + break; + case Token.THROW: + switch (current_token) { + case Token.ARROW: + case Token.OP_COALESCING: + case Token.INTERR: + res = Token.THROW_EXPR; + 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) { - 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) { @@ -1314,7 +1325,8 @@ namespace Mono.CSharp } if (d == '.') { - return Token.INTERR_OPERATOR; + d = reader.Peek (); + return d >= '0' && d <= '9' ? Token.INTERR : Token.INTERR_OPERATOR; } if (d != ' ') { @@ -1344,6 +1356,7 @@ namespace Mono.CSharp case Token.THIS: case Token.NEW: case Token.INTERPOLATED_STRING: + case Token.THROW: next_token = Token.INTERR; break; @@ -2465,6 +2478,12 @@ namespace Mono.CSharp case '\"': ++str_quote; break; + case '\\': + // Skip escaped " character + c = reader.Read (); + if (c == -1) + res = false; + break; case -1: res = false; break; @@ -2547,7 +2566,7 @@ namespace Mono.CSharp id_builder [pos] = (char)c; if (c >= '0' && c <= '9') { - if (pos == 6 && id_builder [0] == 'C' && id_builder [1] == 'S') { + if (pos == 5 && id_builder [0] == 'C' && id_builder [1] == 'S') { // Recognize CSXXXX as C# XXXX warning number = 0; int pow = 1000; @@ -2562,6 +2581,9 @@ namespace Mono.CSharp pow /= 10; } } + } else if (c == '\n' || c == UnicodeLS || c == UnicodePS) { + advance_line (); + break; } else if ((c < 'a' || c > 'z') && (c < 'A' || c > 'Z') && c != '_') { break; } @@ -2587,9 +2609,6 @@ namespace Mono.CSharp while (c == ' ' || c == '\t') c = get_char (); - if (c == '\n' || c == UnicodeLS || c == UnicodePS) - advance_line (); - return number; }