Fix silence turning integers with leading zero into doubles

#KT-4296 Fixed
This commit is contained in:
Nikolay Krasko
2014-07-16 13:46:13 +04:00
parent 73e0ae1d1c
commit 0b7699b844
5 changed files with 200 additions and 151 deletions
@@ -1,4 +1,20 @@
/* The following code was generated by JFlex 1.4.3 on 5/27/14 6:18 PM */
/*
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* The following code was generated by JFlex 1.4.3 on 7/15/14 9:40 PM */
package org.jetbrains.jet.kdoc.lexer;
@@ -12,8 +28,8 @@ import java.lang.Character;
/**
* This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.4.3
* on 5/27/14 6:18 PM from the specification file
* <tt>/Users/abreslav/work/kotlin/compiler/frontend/src/org/jetbrains/jet/kdoc/lexer/KDoc.flex</tt>
* on 7/15/14 9:40 PM from the specification file
* <tt>C:/Projects/kotlin/compiler/frontend/src/org/jetbrains/jet/kdoc/lexer/KDoc.flex</tt>
*/
class _KDocLexer implements FlexLexer {
/** initial size of the lookahead buffer */
@@ -553,6 +569,11 @@ class _KDocLexer implements FlexLexer {
zzMarkedPos = zzMarkedPosL;
switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
case 5:
{ if (isLastToken()) return KDocTokens.END;
else return KDocTokens.TEXT;
}
case 11: break;
case 3:
{ if (yytextContainLineBreaks()) {
yybegin(LINE_BEGINNING);
@@ -562,11 +583,6 @@ class _KDocLexer implements FlexLexer {
return KDocTokens.TEXT; // internal white space
}
}
case 11: break;
case 5:
{ if (isLastToken()) return KDocTokens.END;
else return KDocTokens.TEXT;
}
case 12: break;
case 9:
{ yybegin(CONTENTS);
@@ -578,9 +594,9 @@ class _KDocLexer implements FlexLexer {
return KDocTokens.WIKI_LINK_CLOSE;
}
case 14: break;
case 8:
case 6:
{ yybegin(CONTENTS);
return KDocTokens.WIKI_LINK_OPEN;
return KDocTokens.MARKDOWN_ESCAPED_CHAR;
}
case 15: break;
case 10:
@@ -588,24 +604,24 @@ class _KDocLexer implements FlexLexer {
return KDocTokens.START;
}
case 16: break;
case 1:
{ return TokenType.BAD_CHARACTER;
}
case 17: break;
case 6:
{ yybegin(CONTENTS);
return KDocTokens.MARKDOWN_ESCAPED_CHAR;
}
case 18: break;
case 2:
{ yybegin(CONTENTS);
return KDocTokens.TEXT;
}
case 19: break;
case 17: break;
case 1:
{ return TokenType.BAD_CHARACTER;
}
case 18: break;
case 4:
{ yybegin(CONTENTS_BEGINNING);
return KDocTokens.LEADING_ASTERISK;
}
case 19: break;
case 8:
{ yybegin(CONTENTS);
return KDocTokens.WIKI_LINK_OPEN;
}
case 20: break;
default:
if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
@@ -102,7 +102,7 @@ DOUBLE_LITERAL={FLOATING_POINT_LITERAL1}|{FLOATING_POINT_LITERAL2}|{FLOATING_POI
FLOATING_POINT_LITERAL1=({DIGIT})+"."({DIGIT})+({EXPONENT_PART})?({FLOATING_POINT_LITERAL_SUFFIX})?
FLOATING_POINT_LITERAL2="."({DIGIT})+({EXPONENT_PART})?({FLOATING_POINT_LITERAL_SUFFIX})?
FLOATING_POINT_LITERAL3=({DIGIT})+({EXPONENT_PART})({FLOATING_POINT_LITERAL_SUFFIX})?
FLOATING_POINT_LITERAL4=({DIGIT})+({FLOATING_POINT_LITERAL_SUFFIX})?
FLOATING_POINT_LITERAL4=({DIGIT})+({FLOATING_POINT_LITERAL_SUFFIX})
FLOATING_POINT_LITERAL_SUFFIX=[Ff]
EXPONENT_PART=[Ee]["+""-"]?({DIGIT})*
//HEX_DOUBLE_LITERAL={HEX_SIGNIFICAND}{BINARY_EXPONENT}[Dd]?
@@ -1,4 +1,20 @@
/* The following code was generated by JFlex 1.4.3 on 5/27/14 6:18 PM */
/*
* Copyright 2010-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* The following code was generated by JFlex 1.4.3 on 7/15/14 9:40 PM */
package org.jetbrains.jet.lexer;
@@ -15,8 +31,8 @@ import org.jetbrains.jet.lexer.JetTokens;
/**
* This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.4.3
* on 5/27/14 6:18 PM from the specification file
* <tt>/Users/abreslav/work/kotlin/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex</tt>
* on 7/15/14 9:40 PM from the specification file
* <tt>C:/Projects/kotlin/compiler/frontend/src/org/jetbrains/jet/lexer/Jet.flex</tt>
*/
class _JetLexer implements FlexLexer {
/** initial size of the lookahead buffer */
@@ -131,7 +147,7 @@ class _JetLexer implements FlexLexer {
"\1\33\1\34\1\35\1\36\1\35\1\1\1\37\2\35"+
"\1\40\1\1\1\40\3\41\1\42\1\43\1\2\1\0"+
"\2\44\1\0\1\45\1\0\1\5\1\0\1\46\1\47"+
"\1\50\1\51\1\0\1\52\1\44\2\2\1\44\1\53"+
"\1\50\1\51\1\0\1\52\1\0\2\2\1\44\1\53"+
"\1\54\1\55\1\56\2\13\1\0\3\3\1\57\1\60"+
"\1\61\1\3\1\62\6\3\1\63\10\3\1\64\1\65"+
"\1\66\1\67\1\70\1\71\1\72\1\73\1\74\1\75"+
@@ -530,13 +546,13 @@ class _JetLexer implements FlexLexer {
"\6\0\1\11\16\1\1\11\3\1\1\11\17\1\1\11"+
"\7\1\6\11\1\1\1\11\2\1\2\11\4\1\1\11"+
"\2\1\2\11\1\1\1\0\1\11\1\1\1\0\1\1"+
"\1\0\1\1\1\0\2\1\1\11\1\1\1\0\5\1"+
"\5\11\1\1\1\0\7\1\1\11\21\1\11\11\1\1"+
"\1\0\2\11\1\1\2\0\1\1\2\11\1\0\1\11"+
"\1\1\1\11\2\0\3\1\1\11\1\0\1\1\2\0"+
"\1\11\15\1\1\11\12\1\1\11\2\0\1\1\1\11"+
"\1\1\4\11\2\1\1\0\22\1\1\11\1\0\14\1"+
"\1\0\7\1";
"\1\0\1\1\1\0\2\1\1\11\1\1\1\0\1\1"+
"\1\0\3\1\5\11\1\1\1\0\7\1\1\11\21\1"+
"\11\11\1\1\1\0\2\11\1\1\2\0\1\1\2\11"+
"\1\0\1\11\1\1\1\11\2\0\3\1\1\11\1\0"+
"\1\1\2\0\1\11\15\1\1\11\12\1\1\11\2\0"+
"\1\1\1\11\1\1\4\11\2\1\1\0\22\1\1\11"+
"\1\0\14\1\1\0\7\1";
private static int [] zzUnpackAttribute() {
int [] result = new int[232];
@@ -910,194 +926,185 @@ class _JetLexer implements FlexLexer {
{ return JetTokens.NULL_KEYWORD ;
}
case 107: break;
case 35:
{ if (lBraceCount == 0) {
popState();
return JetTokens.LONG_TEMPLATE_ENTRY_END;
}
lBraceCount--;
return JetTokens.RBRACE;
}
case 108: break;
case 19:
{ return JetTokens.LT ;
}
case 109: break;
case 108: break;
case 52:
{ return JetTokens.DO_KEYWORD ;
}
case 110: break;
case 109: break;
case 18:
{ return JetTokens.PLUS ;
}
case 111: break;
case 110: break;
case 55:
{ return JetTokens.PLUSEQ ;
}
case 112: break;
case 111: break;
case 91:
{ popState(); return JetTokens.THIS_KEYWORD;
}
case 113: break;
case 112: break;
case 28:
{ return JetTokens.COMMA ;
}
case 114: break;
case 113: break;
case 20:
{ return JetTokens.GT ;
}
case 115: break;
case 114: break;
case 4:
{ return JetTokens.WHITE_SPACE;
}
case 116: break;
case 115: break;
case 26:
{ return JetTokens.RPAR ;
}
case 117: break;
case 116: break;
case 54:
{ return JetTokens.DOUBLE_ARROW;
}
case 118: break;
case 117: break;
case 85:
{ return JetTokens.TRUE_KEYWORD ;
}
case 119: break;
case 118: break;
case 37:
{ return JetTokens.FIELD_IDENTIFIER;
}
case 120: break;
case 119: break;
case 59:
{ return JetTokens.ANDAND ;
}
case 121: break;
case 120: break;
case 64:
{ pushState(LONG_TEMPLATE_ENTRY); return JetTokens.LONG_TEMPLATE_ENTRY_START;
}
case 122: break;
case 121: break;
case 36:
{ return JetTokens.FLOAT_LITERAL;
}
case 123: break;
case 122: break;
case 38:
{ return JetTokens.EOL_COMMENT;
}
case 124: break;
case 123: break;
case 89:
{ return JetTokens.WHEN_KEYWORD ;
}
case 125: break;
case 124: break;
case 73:
{ pushState(RAW_STRING); return JetTokens.OPEN_QUOTE;
}
case 126: break;
case 125: break;
case 22:
{ return JetTokens.COLON ;
}
case 127: break;
case 126: break;
case 57:
{ return JetTokens.LTEQ ;
}
case 128: break;
case 127: break;
case 46:
{ return JetTokens.ARROW ;
}
case 129: break;
case 128: break;
case 32:
{ popState(); return JetTokens.IDENTIFIER;
}
case 130: break;
case 129: break;
case 23:
{ return JetTokens.LBRACKET ;
}
case 131: break;
case 130: break;
case 68:
{ yypushback(2); return JetTokens.INTEGER_LITERAL;
}
case 132: break;
case 131: break;
case 11:
{ return JetTokens.CHARACTER_LITERAL;
}
case 133: break;
case 132: break;
case 78:
{ return JetTokens.VAR_KEYWORD ;
}
case 134: break;
case 133: break;
case 58:
{ return JetTokens.GTEQ ;
}
case 135: break;
case 134: break;
case 2:
{ return JetTokens.INTEGER_LITERAL;
}
case 136: break;
case 135: break;
case 14:
{ return JetTokens.RBRACE ;
}
case 137: break;
case 136: break;
case 95:
{ return JetTokens.CLASS_KEYWORD ;
}
case 138: break;
case 137: break;
case 74:
{ return JetTokens.TRY_KEYWORD ;
}
case 139: break;
case 138: break;
case 8:
{ return JetTokens.EXCL ;
}
case 140: break;
case 139: break;
case 42:
{ return JetTokens.EXCLEQ ;
}
case 141: break;
case 140: break;
case 45:
{ return JetTokens.MINUSEQ ;
}
case 142: break;
case 141: break;
case 101:
{ return JetTokens.PACKAGE_KEYWORD ;
}
case 143: break;
case 142: break;
case 92:
{ return JetTokens.THROW_KEYWORD ;
}
case 144: break;
case 143: break;
case 94:
{ return JetTokens.SUPER_KEYWORD ;
}
case 145: break;
case 67:
{ if (commentDepth > 0) {
commentDepth--;
}
else {
int state = yystate();
popState();
zzStartRead = commentStart;
return commentStateToTokenType(state);
}
}
case 146: break;
case 144: break;
case 97:
{ return JetTokens.WHILE_KEYWORD ;
}
case 147: break;
case 145: break;
case 44:
{ return JetTokens.MINUSMINUS;
}
case 148: break;
case 146: break;
case 102:
{ return JetTokens.CONTINUE_KEYWORD ;
}
case 149: break;
case 147: break;
case 71:
{ return JetTokens.NOT_IN;
}
case 150: break;
case 148: break;
case 69:
{ pushState(DOC_COMMENT);
commentDepth = 0;
commentStart = getTokenStart();
}
case 149: break;
case 6:
{ return JetTokens.DIV ;
}
case 150: break;
case 63:
{ pushState(SHORT_TEMPLATE_ENTRY);
yypushback(yylength() - 1);
return JetTokens.SHORT_TEMPLATE_ENTRY_START;
}
case 151: break;
case 81:
{ int length = yytext().length();
@@ -1123,10 +1130,14 @@ class _JetLexer implements FlexLexer {
{ return JetTokens.QUEST ;
}
case 155: break;
case 69:
{ pushState(DOC_COMMENT);
commentDepth = 0;
commentStart = getTokenStart();
case 41:
{ if (zzCurrentPos == 0) {
return JetTokens.SHEBANG_COMMENT;
}
else {
yypushback(yylength() - 1);
return JetTokens.HASH;
}
}
case 156: break;
case 60:
@@ -1153,73 +1164,79 @@ class _JetLexer implements FlexLexer {
{ return TokenType.BAD_CHARACTER;
}
case 162: break;
case 63:
{ pushState(SHORT_TEMPLATE_ENTRY);
yypushback(yylength() - 1);
return JetTokens.SHORT_TEMPLATE_ENTRY_START;
}
case 163: break;
case 70:
{ return JetTokens.NOT_IS;
}
case 164: break;
case 163: break;
case 15:
{ return JetTokens.MUL ;
}
case 165: break;
case 164: break;
case 24:
{ return JetTokens.RBRACKET ;
}
case 166: break;
case 165: break;
case 56:
{ return JetTokens.PLUSPLUS ;
}
case 166: break;
case 84:
{ return JetTokens.THIS_KEYWORD ;
}
case 167: break;
case 9:
{ return JetTokens.DOT ;
}
case 168: break;
case 27:
{ return JetTokens.SEMICOLON ;
}
case 169: break;
case 49:
{ return JetTokens.IF_KEYWORD ;
}
case 170: break;
case 65:
{ return JetTokens.ESCAPE_SEQUENCE;
}
case 171: break;
case 39:
{ pushState(BLOCK_COMMENT);
commentDepth = 0;
commentStart = getTokenStart();
}
case 168: break;
case 84:
{ return JetTokens.THIS_KEYWORD ;
}
case 169: break;
case 9:
{ return JetTokens.DOT ;
}
case 170: break;
case 27:
{ return JetTokens.SEMICOLON ;
}
case 171: break;
case 49:
{ return JetTokens.IF_KEYWORD ;
}
case 172: break;
case 65:
{ return JetTokens.ESCAPE_SEQUENCE;
}
case 173: break;
case 31:
{ popState(); return JetTokens.CLOSING_QUOTE;
}
case 174: break;
case 173: break;
case 16:
{ return JetTokens.EQ ;
}
case 175: break;
case 174: break;
case 75:
{ return JetTokens.AS_SAFE;
}
case 176: break;
case 175: break;
case 25:
{ return JetTokens.LPAR ;
}
case 177: break;
case 176: break;
case 10:
{ return JetTokens.MINUS ;
}
case 177: break;
case 67:
{ if (commentDepth > 0) {
commentDepth--;
}
else {
int state = yystate();
popState();
zzStartRead = commentStart;
return commentStateToTokenType(state);
}
}
case 178: break;
case 98:
{ return JetTokens.FALSE_KEYWORD ;
@@ -1289,43 +1306,42 @@ class _JetLexer implements FlexLexer {
{ return JetTokens.MULTEQ ;
}
case 195: break;
case 41:
{ if (zzCurrentPos == 0) {
return JetTokens.SHEBANG_COMMENT;
}
else {
yypushback(yylength() - 1);
return JetTokens.HASH;
}
}
case 196: break;
case 13:
{ return JetTokens.LBRACE ;
}
case 197: break;
case 196: break;
case 99:
{ return JetTokens.OBJECT_KEYWORD ;
}
case 198: break;
case 197: break;
case 96:
{ return JetTokens.BREAK_KEYWORD ;
}
case 199: break;
case 198: break;
case 82:
{ return JetTokens.BLOCK_COMMENT;
}
case 200: break;
case 199: break;
case 93:
{ return JetTokens.TRAIT_KEYWORD ;
}
case 201: break;
case 200: break;
case 62:
{ return JetTokens.COLONCOLON;
}
case 202: break;
case 201: break;
case 33:
{
}
case 202: break;
case 35:
{ if (lBraceCount == 0) {
popState();
return JetTokens.LONG_TEMPLATE_ENTRY_END;
}
lBraceCount--;
return JetTokens.RBRACE;
}
case 203: break;
case 7:
{ return JetTokens.HASH ;
+4 -1
View File
@@ -14,4 +14,7 @@ val array = array<Any>(
0X1l,
0b1l,
0B1l,
)
0
)
val a = 01
+17 -3
View File
@@ -96,7 +96,21 @@ JetFile: IntegerLiteral.kt
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('0B1l')
PsiElement(COMMA)(',')
PsiErrorElement:Expecting an argument
<empty list>
PsiWhiteSpace('\n ')
VALUE_ARGUMENT
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('0')
PsiWhiteSpace('\n')
PsiElement(RPAR)(')')
PsiElement(RPAR)(')')
PsiWhiteSpace('\n\n')
PROPERTY
PsiElement(val)('val')
PsiWhiteSpace(' ')
PsiElement(IDENTIFIER)('a')
PsiWhiteSpace(' ')
PsiElement(EQ)('=')
PsiWhiteSpace(' ')
INTEGER_CONSTANT
PsiElement(INTEGER_LITERAL)('0')
PsiErrorElement:Property getter or setter expected
PsiElement(INTEGER_LITERAL)('1')