Merge remote branch 'origin/master'

This commit is contained in:
Dmitry Trofimov
2011-09-16 12:41:53 +04:00
16 changed files with 466 additions and 308 deletions
+13 -3
View File
@@ -510,9 +510,9 @@
<configurationProducer implementation="com.jetbrains.rest.run.docutils.DocutilsConfigurationProducer"/>
<!-- Mako files -->
<lang.substitutor language="HTML" implementationClass="com.jetbrains.mako.MakoLanguageSubstitutor"/>
<lang.substitutor language="XHTML" implementationClass="com.jetbrains.mako.MakoLanguageSubstitutor"/>
<lang.substitutor language="XML" implementationClass="com.jetbrains.mako.MakoLanguageSubstitutor"/>
<lang.substitutor language="HTML" implementationClass="com.jetbrains.mako.TemplateLanguageSubstitutor"/>
<lang.substitutor language="XHTML" implementationClass="com.jetbrains.mako.TemplateLanguageSubstitutor"/>
<lang.substitutor language="XML" implementationClass="com.jetbrains.mako.TemplateLanguageSubstitutor"/>
<colorSettingsPage implementation="com.jetbrains.mako.highlighting.MakoColorsPage"/>
<lang.syntaxHighlighterFactory key="Mako"
@@ -526,6 +526,8 @@
<quoteHandler fileType="Mako" className="com.jetbrains.mako.editor.MakoQuoteHandler"/>
<completion.contributor language="Mako"
implementationClass="com.jetbrains.mako.editor.MakoCompletionContributor"/>
<completion.contributor language="Mako"
implementationClass="com.jetbrains.mako.editor.MakoFunctionsCompletionContributor"/>
<typedHandler implementation="com.jetbrains.mako.editor.MakoBracesHandler"
id="MakoBracesHandler"/>
@@ -533,6 +535,14 @@
<projectService serviceInterface="com.jetbrains.mako.TemplatesService"
serviceImplementation="com.jetbrains.mako.TemplatesService"/>
<!-- Jinja2 -->
<editorHighlighterProvider filetype="Jinja2" implementationClass="com.jetbrains.jinja2.highlighting.Jinja2EditorHighlighterProvider"/>
<lang.syntaxHighlighterFactory key="Jinja2" implementationClass="com.jetbrains.jinja2.highlighting.Jinja2HighlighterFactory"/>
<lang.parserDefinition language="Jinja2"
implementationClass="com.jetbrains.jinja2.parsing.Jinja2ParserDefinition"/>
<lang.fileViewProviderFactory language="Jinja2"
implementationClass="com.jetbrains.jinja2.Jinja2FileViewProviderFactory"/>
</extensions>
<extensionPoints>
@@ -56,6 +56,7 @@ QFIX.augment.assignment=Assignment can be replaced with augmented assignment
QFIX.chained.comparison=Simplify chained comparison
QFIX.statement.effect=Statement can be replaced with function call
QFIX.statement.effect.move.docstring=Move docstring to the proper place
QFIX.statement.effect.introduce.variable=Introduce variable
@@ -0,0 +1,53 @@
package com.jetbrains.python.actions;
import com.intellij.codeInspection.LocalQuickFix;
import com.intellij.codeInspection.ProblemDescriptor;
import com.intellij.openapi.project.Project;
import com.intellij.psi.PsiElement;
import com.intellij.psi.util.PsiTreeUtil;
import com.jetbrains.python.PyBundle;
import com.jetbrains.python.psi.*;
import org.jetbrains.annotations.NotNull;
/**
* User: catherine
*
* QuickFix to move misplaced docstring
*/
public class StatementEffectDocstringQuickFix implements LocalQuickFix {
public StatementEffectDocstringQuickFix() {
}
@NotNull
public String getName() {
return PyBundle.message("QFIX.statement.effect.move.docstring");
}
@NotNull
public String getFamilyName() {
return PyBundle.message("INSP.GROUP.python");
}
public void applyFix(@NotNull Project project, @NotNull ProblemDescriptor descriptor) {
PsiElement expression = descriptor.getPsiElement();
if (expression instanceof PyStringLiteralExpression) {
PyStatement st = PsiTreeUtil.getParentOfType(expression, PyStatement.class);
if (st != null) {
PyDocStringOwner parent = PsiTreeUtil.getParentOfType(expression, PyDocStringOwner.class);
if (parent instanceof PyClass || parent instanceof PyFunction) {
PyStatementList statementList = PsiTreeUtil.findChildOfType(parent, PyStatementList.class);
if (statementList != null) {
PyStatement[] statements = statementList.getStatements();
if (statements.length > 0) {
statementList.addBefore(st, statements[0]);
st.delete();
}
}
}
}
}
}
}
@@ -4,7 +4,6 @@ import com.intellij.openapi.fileTypes.SyntaxHighlighter;
import com.intellij.openapi.fileTypes.SyntaxHighlighterFactory;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.vfs.VirtualFile;
import com.jetbrains.django.lang.template.highlighting.DjangoTemplateFileHighlighter;
import org.jetbrains.annotations.NotNull;
/**
@@ -1,10 +1,8 @@
package com.jetbrains.python.codeInsight.completion;
import com.intellij.codeInsight.AutoPopupController;
import com.intellij.codeInsight.TailType;
import com.intellij.codeInsight.completion.InsertHandler;
import com.intellij.codeInsight.completion.InsertionContext;
import com.intellij.codeInsight.lookup.Lookup;
import com.intellij.codeInsight.lookup.LookupElement;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
@@ -38,8 +36,5 @@ public class PyClassInsertHandler implements InsertHandler<LookupElement> {
editor.getCaretModel().moveToOffset(offset+2);
}
}
else if (context.getCompletionChar() == Lookup.COMPLETE_STATEMENT_SELECT_CHAR) {
TailType.SMART_COMPLETION.processTail(editor, context.getTailOffset());
}
}
}
@@ -4,10 +4,7 @@ import com.intellij.codeInspection.ProblemsHolder;
import com.intellij.psi.PsiElementVisitor;
import com.jetbrains.python.PyBundle;
import com.jetbrains.python.actions.PyDefaultArgumentQuickFix;
import com.jetbrains.python.psi.PyDictLiteralExpression;
import com.jetbrains.python.psi.PyExpression;
import com.jetbrains.python.psi.PyListLiteralExpression;
import com.jetbrains.python.psi.PyNamedParameter;
import com.jetbrains.python.psi.*;
import org.jetbrains.annotations.Nls;
import org.jetbrains.annotations.NotNull;
@@ -41,6 +38,11 @@ public class PyDefaultArgumentInspection extends PyInspection {
if (defaultValue instanceof PyListLiteralExpression || defaultValue instanceof PyDictLiteralExpression) {
registerProblem(defaultValue, "Default argument value is mutable", new PyDefaultArgumentQuickFix());
}
if (defaultValue instanceof PyCallExpression) {
PyExpression callee = ((PyCallExpression)defaultValue).getCallee();
if (callee != null && "dict".equals(callee.getText()))
registerProblem(defaultValue, "Default argument value is mutable", new PyDefaultArgumentQuickFix());
}
}
}
}
@@ -6,6 +6,7 @@ import com.intellij.psi.PsiElementVisitor;
import com.intellij.psi.ResolveResult;
import com.intellij.psi.util.PsiTreeUtil;
import com.jetbrains.python.PyBundle;
import com.jetbrains.python.actions.StatementEffectDocstringQuickFix;
import com.jetbrains.python.actions.StatementEffectFunctionCallQuickFix;
import com.jetbrains.python.actions.StatementEffectIntroduceVariableQuickFix;
import com.jetbrains.python.console.PydevConsoleRunner;
@@ -64,10 +65,24 @@ public class PyStatementEffectInspection extends PyInspection {
return;
}
}
if (checkStringLiteral(expression))
return;
registerProblem(expression, "Statement seems to have no effect",
new StatementEffectIntroduceVariableQuickFix(expression));
}
private boolean checkStringLiteral(PyExpression expression) {
if (expression instanceof PyStringLiteralExpression) {
PyDocStringOwner parent = PsiTreeUtil.getParentOfType(expression, PyFunction.class, PyClass.class);
if (parent != null && parent.getDocStringExpression() == null) {
registerProblem(expression, "Docstring seems to be misplaced",
new StatementEffectDocstringQuickFix());
return true;
}
}
return false;
}
private boolean hasEffect(@Nullable PyExpression expression) {
if (expression == null) {
return false;
@@ -171,7 +171,8 @@ return yylength()-i-1;
"}" { return PyTokenTypes.RBRACE; }
"@" { return PyTokenTypes.AT; }
"," { return PyTokenTypes.COMMA; }
":" { yybegin(PENDING_DOCSTRING); return PyTokenTypes.COLON; }
":" { return PyTokenTypes.COLON; }
":"(\ )*"\n" { yypushback(yylength()-1); yybegin(PENDING_DOCSTRING); return PyTokenTypes.COLON; }
"." { return PyTokenTypes.DOT; }
"`" { return PyTokenTypes.TICK; }
"=" { return PyTokenTypes.EQ; }
@@ -1,4 +1,4 @@
/* The following code was generated by JFlex 1.4.3 on 7/14/11 7:46 PM */
/* The following code was generated by JFlex 1.4.3 on 9/15/11 2:15 PM */
/* It's an automatically generated code. Do not modify it. */
package com.jetbrains.python.lexer;
@@ -12,7 +12,7 @@ import com.intellij.openapi.util.text.StringUtil;
/**
* This class is a scanner generated by
* <a href="http://www.jflex.de/">JFlex</a> 1.4.3
* on 7/14/11 7:46 PM from the specification file
* on 9/15/11 2:15 PM from the specification file
* <tt>./Python.flex</tt>
*/
class _PythonLexer implements FlexLexer {
@@ -226,19 +226,19 @@ class _PythonLexer implements FlexLexer {
"\1\13\1\47\1\0\1\50\3\14\1\51\4\14\1\52"+
"\2\14\6\17\7\14\1\53\1\54\1\55\5\14\1\56"+
"\1\57\1\60\1\61\1\62\1\63\1\64\1\65\1\66"+
"\1\67\1\70\1\71\1\72\1\73\1\74\1\75\1\11"+
"\1\76\1\77\1\0\1\76\3\13\1\47\1\0\1\100"+
"\11\14\1\17\2\101\1\102\1\14\1\103\1\104\1\105"+
"\1\106\7\14\1\107\1\110\1\111\1\112\1\0\2\77"+
"\1\0\1\113\4\14\1\114\1\115\2\14\4\0\4\14"+
"\1\116\3\14\1\0\2\76\1\0\1\14\1\117\3\14"+
"\1\120\1\0\2\101\1\0\2\14\1\121\1\14\1\122"+
"\1\14\1\123\3\76\1\14\1\124\1\125\1\126\3\101"+
"\1\127\1\14\1\130\1\131\2\0\1\132\2\0\1\14"+
"\2\76\2\101\1\133";
"\1\67\1\70\1\71\1\72\1\73\1\74\1\75\1\76"+
"\1\0\1\11\1\77\1\100\1\0\1\77\3\13\1\47"+
"\1\0\1\101\11\14\1\17\2\102\1\103\1\14\1\104"+
"\1\105\1\106\1\107\7\14\1\110\1\111\1\112\1\113"+
"\1\0\2\100\1\0\1\114\4\14\1\115\1\116\2\14"+
"\4\0\4\14\1\117\3\14\1\0\2\77\1\0\1\14"+
"\1\120\3\14\1\121\1\0\2\102\1\0\2\14\1\122"+
"\1\14\1\123\1\14\1\124\3\77\1\14\1\125\1\126"+
"\1\127\3\102\1\130\1\14\1\131\1\132\2\0\1\133"+
"\2\0\1\14\2\77\2\102\1\134";
private static int [] zzUnpackAction() {
int [] result = new int[240];
int [] result = new int[242];
int offset = 0;
offset = zzUnpackAction(ZZ_ACTION_PACKED_0, offset, result);
return result;
@@ -270,32 +270,33 @@ class _PythonLexer implements FlexLexer {
"\0\u0708\0\u0750\0\u0798\0\u07e0\0\u0828\0\u0870\0\u08b8\0\u0900"+
"\0\u0948\0\u0990\0\u09d8\0\u0a20\0\u0a68\0\u0ab0\0\u0af8\0\u0b40"+
"\0\u0b88\0\u0bd0\0\u0c18\0\u0c60\0\330\0\330\0\330\0\330"+
"\0\330\0\330\0\330\0\330\0\330\0\330\0\330\0\330"+
"\0\u01b0\0\u0ca8\0\u0cf0\0\u0d38\0\330\0\u0d80\0\u0dc8\0\u0e10"+
"\0\u0e58\0\u0ea0\0\u0ee8\0\u0f30\0\u0f78\0\330\0\u0fc0\0\u1008"+
"\0\330\0\u1050\0\u1098\0\u10e0\0\u0360\0\u1128\0\u1170\0\u11b8"+
"\0\u1200\0\330\0\u1248\0\u1290\0\u12d8\0\u1320\0\u1368\0\u13b0"+
"\0\u13f8\0\u1440\0\u1488\0\u14d0\0\u1518\0\u1560\0\u15a8\0\u15f0"+
"\0\u1638\0\u0360\0\u0360\0\u0360\0\u1680\0\u16c8\0\u1710\0\u1758"+
"\0\u17a0\0\330\0\330\0\330\0\u17e8\0\330\0\u1830\0\330"+
"\0\330\0\330\0\330\0\330\0\u1878\0\330\0\330\0\u18c0"+
"\0\330\0\u1908\0\u1950\0\330\0\u1908\0\u1998\0\u19e0\0\u1a28"+
"\0\u1a70\0\u1ab8\0\u1b00\0\u0360\0\u1b48\0\u1b90\0\u1bd8\0\u1c20"+
"\0\u1c68\0\u1cb0\0\u1cf8\0\u1d40\0\u1d88\0\330\0\u1dd0\0\u1e18"+
"\0\u0360\0\u1e60\0\u0360\0\u0360\0\u0360\0\u0360\0\u1ea8\0\u1ef0"+
"\0\u1f38\0\u1f80\0\u1fc8\0\u2010\0\u2058\0\330\0\330\0\330"+
"\0\330\0\u20a0\0\u20e8\0\u2130\0\u2178\0\u0360\0\u21c0\0\u2208"+
"\0\u2250\0\u2298\0\u0360\0\u0360\0\u22e0\0\u2328\0\u2370\0\u23b8"+
"\0\u2400\0\u2448\0\u2490\0\u24d8\0\u2520\0\u2568\0\u0360\0\u25b0"+
"\0\u25f8\0\u2640\0\u2688\0\u26d0\0\u2718\0\u2760\0\u27a8\0\u0360"+
"\0\u27f0\0\u2838\0\u2880\0\u0360\0\u28c8\0\u2910\0\u2958\0\u29a0"+
"\0\u29e8\0\u2a30\0\u0360\0\u2a78\0\u0360\0\u2ac0\0\u0360\0\u1908"+
"\0\u2b08\0\u2b50\0\u2b98\0\u0360\0\u0360\0\u0360\0\330\0\u2be0"+
"\0\u2c28\0\u0360\0\u2c70\0\u0360\0\u0360\0\u2cb8\0\u2d00\0\u0360"+
"\0\u2d48\0\u2d90\0\u2dd8\0\u2688\0\u2760\0\u28c8\0\u29a0\0\u0360";
"\0\330\0\330\0\330\0\330\0\330\0\u0ca8\0\330\0\330"+
"\0\u01b0\0\u0cf0\0\u0d38\0\u0d80\0\330\0\u0dc8\0\u0e10\0\u0e58"+
"\0\u0ea0\0\u0ee8\0\u0f30\0\u0f78\0\u0fc0\0\330\0\u1008\0\u1050"+
"\0\330\0\u1098\0\u10e0\0\u1128\0\u0360\0\u1170\0\u11b8\0\u1200"+
"\0\u1248\0\330\0\u1290\0\u12d8\0\u1320\0\u1368\0\u13b0\0\u13f8"+
"\0\u1440\0\u1488\0\u14d0\0\u1518\0\u1560\0\u15a8\0\u15f0\0\u1638"+
"\0\u1680\0\u0360\0\u0360\0\u0360\0\u16c8\0\u1710\0\u1758\0\u17a0"+
"\0\u17e8\0\330\0\330\0\330\0\u1830\0\330\0\u1878\0\330"+
"\0\330\0\330\0\330\0\330\0\u18c0\0\330\0\330\0\u1908"+
"\0\330\0\330\0\u0ca8\0\u1950\0\u1998\0\330\0\u1950\0\u19e0"+
"\0\u1a28\0\u1a70\0\u1ab8\0\u1b00\0\u1b48\0\u0360\0\u1b90\0\u1bd8"+
"\0\u1c20\0\u1c68\0\u1cb0\0\u1cf8\0\u1d40\0\u1d88\0\u1dd0\0\330"+
"\0\u1e18\0\u1e60\0\u0360\0\u1ea8\0\u0360\0\u0360\0\u0360\0\u0360"+
"\0\u1ef0\0\u1f38\0\u1f80\0\u1fc8\0\u2010\0\u2058\0\u20a0\0\330"+
"\0\330\0\330\0\330\0\u20e8\0\u2130\0\u2178\0\u21c0\0\u0360"+
"\0\u2208\0\u2250\0\u2298\0\u22e0\0\u0360\0\u0360\0\u2328\0\u2370"+
"\0\u23b8\0\u2400\0\u2448\0\u2490\0\u24d8\0\u2520\0\u2568\0\u25b0"+
"\0\u0360\0\u25f8\0\u2640\0\u2688\0\u26d0\0\u2718\0\u2760\0\u27a8"+
"\0\u27f0\0\u0360\0\u2838\0\u2880\0\u28c8\0\u0360\0\u2910\0\u2958"+
"\0\u29a0\0\u29e8\0\u2a30\0\u2a78\0\u0360\0\u2ac0\0\u0360\0\u2b08"+
"\0\u0360\0\u1950\0\u2b50\0\u2b98\0\u2be0\0\u0360\0\u0360\0\u0360"+
"\0\330\0\u2c28\0\u2c70\0\u0360\0\u2cb8\0\u0360\0\u0360\0\u2d00"+
"\0\u2d48\0\u0360\0\u2d90\0\u2dd8\0\u2e20\0\u26d0\0\u27a8\0\u2910"+
"\0\u29e8\0\u0360";
private static int [] zzUnpackRowMap() {
int [] result = new int[240];
int [] result = new int[242];
int offset = 0;
offset = zzUnpackRowMap(ZZ_ROWMAP_PACKED_0, offset, result);
return result;
@@ -374,136 +375,136 @@ class _PythonLexer implements FlexLexer {
"\1\163\107\0\1\164\1\165\106\0\1\166\1\0\1\167"+
"\105\0\1\170\107\0\1\171\107\0\1\172\107\0\1\173"+
"\107\0\1\174\6\0\1\175\100\0\1\176\6\0\1\177"+
"\1\200\77\0\1\201\25\0\13\102\1\0\20\102\1\202"+
"\1\104\1\102\1\105\50\102\34\0\1\203\1\204\1\0"+
"\1\105\2\205\45\0\1\105\110\102\13\106\1\0\21\106"+
"\1\107\1\202\1\105\160\106\35\0\1\204\1\206\1\105"+
"\2\205\45\0\1\105\1\0\1\111\1\112\1\111\1\0"+
"\1\111\3\0\1\116\7\0\1\116\1\0\1\117\2\120"+
"\1\0\1\121\61\0\3\112\1\0\1\112\15\0\1\117"+
"\2\120\1\0\1\121\61\0\5\207\2\0\1\207\4\0"+
"\1\207\2\0\1\207\3\0\2\207\15\0\1\207\1\0"+
"\1\207\3\0\1\207\37\0\1\210\1\0\1\210\1\0"+
"\1\210\103\0\1\211\3\0\1\211\103\0\3\117\1\0"+
"\1\117\16\0\2\120\1\0\1\121\61\0\3\212\1\0"+
"\1\212\20\0\1\213\32\0\1\213\27\0\11\24\2\0"+
"\7\24\1\0\2\24\1\0\4\24\1\214\7\0\16\24"+
"\30\0\6\24\1\215\2\24\2\0\7\24\1\0\2\24"+
"\1\0\5\24\7\0\16\24\30\0\11\24\2\0\7\24"+
"\1\0\2\24\1\0\5\24\7\0\1\24\1\216\14\24"+
"\30\0\11\24\2\0\7\24\1\0\1\217\1\24\1\0"+
"\5\24\1\36\1\0\1\37\4\0\16\24\30\0\11\24"+
"\2\0\7\24\1\0\2\24\1\0\5\24\7\0\12\24"+
"\1\220\3\24\30\0\11\24\2\0\7\24\1\0\2\24"+
"\1\0\5\24\7\0\6\24\1\221\7\24\30\0\11\24"+
"\2\0\7\24\1\0\2\24\1\0\5\24\7\0\3\24"+
"\1\222\3\24\1\223\6\24\30\0\11\24\2\0\7\24"+
"\1\0\2\24\1\0\5\24\7\0\4\24\1\224\11\24"+
"\30\0\11\24\2\0\7\24\1\0\2\24\1\0\5\24"+
"\7\0\7\24\1\225\6\24\27\0\13\135\1\0\20\135"+
"\1\226\1\137\1\135\1\0\50\135\34\0\1\227\53\0"+
"\110\135\13\140\1\0\21\140\1\141\1\226\1\0\160\140"+
"\36\0\1\230\52\0\11\24\2\0\7\24\1\0\2\24"+
"\1\0\5\24\7\0\2\24\1\231\13\24\30\0\11\24"+
"\2\0\7\24\1\0\2\24\1\0\5\24\7\0\3\24"+
"\1\232\12\24\30\0\11\24\2\0\7\24\1\0\2\24"+
"\1\0\5\24\7\0\4\24\1\233\11\24\30\0\3\24"+
"\1\234\4\24\1\235\2\0\7\24\1\0\2\24\1\0"+
"\5\24\7\0\16\24\30\0\11\24\2\0\7\24\1\0"+
"\2\24\1\0\5\24\7\0\11\24\1\236\4\24\30\0"+
"\1\200\77\0\1\201\64\0\1\202\1\203\47\0\13\102"+
"\1\0\20\102\1\204\1\104\1\102\1\105\50\102\34\0"+
"\1\205\1\206\1\0\1\105\2\207\45\0\1\105\110\102"+
"\13\106\1\0\21\106\1\107\1\204\1\105\160\106\35\0"+
"\1\206\1\210\1\105\2\207\45\0\1\105\1\0\1\111"+
"\1\112\1\111\1\0\1\111\3\0\1\116\7\0\1\116"+
"\1\0\1\117\2\120\1\0\1\121\61\0\3\112\1\0"+
"\1\112\15\0\1\117\2\120\1\0\1\121\61\0\5\211"+
"\2\0\1\211\4\0\1\211\2\0\1\211\3\0\2\211"+
"\15\0\1\211\1\0\1\211\3\0\1\211\37\0\1\212"+
"\1\0\1\212\1\0\1\212\103\0\1\213\3\0\1\213"+
"\103\0\3\117\1\0\1\117\16\0\2\120\1\0\1\121"+
"\61\0\3\214\1\0\1\214\20\0\1\215\32\0\1\215"+
"\27\0\11\24\2\0\7\24\1\0\2\24\1\0\4\24"+
"\1\216\7\0\16\24\30\0\6\24\1\217\2\24\2\0"+
"\7\24\1\0\2\24\1\0\5\24\7\0\16\24\30\0"+
"\11\24\2\0\7\24\1\0\2\24\1\0\5\24\7\0"+
"\1\24\1\237\14\24\30\0\11\24\2\0\7\24\1\0"+
"\2\24\1\0\5\24\7\0\1\240\15\24\30\0\11\24"+
"\2\0\7\24\1\0\2\24\1\0\5\24\7\0\10\24"+
"\1\241\5\24\30\0\11\24\2\0\7\24\1\0\2\24"+
"\1\0\5\24\7\0\3\24\1\242\12\24\30\0\11\24"+
"\2\0\7\24\1\0\1\243\1\24\1\0\5\24\7\0"+
"\16\24\30\0\6\24\1\244\2\24\2\0\7\24\1\0"+
"\2\24\1\0\5\24\7\0\16\24\30\0\11\24\2\0"+
"\7\24\1\0\2\24\1\0\5\24\7\0\7\24\1\245"+
"\6\24\111\0\1\246\107\0\1\247\107\0\1\250\107\0"+
"\1\251\62\0\1\204\1\0\1\105\2\205\45\0\1\105"+
"\34\203\1\252\1\253\52\203\35\206\1\254\1\255\51\206"+
"\1\0\5\207\2\0\1\207\1\116\3\0\1\207\2\0"+
"\1\207\1\116\2\0\2\207\15\0\1\207\1\0\1\207"+
"\3\0\1\207\37\0\1\210\1\0\1\210\1\0\1\210"+
"\3\0\1\116\7\0\1\116\67\0\1\211\3\0\1\211"+
"\3\0\1\116\7\0\1\116\67\0\3\212\1\0\1\212"+
"\21\0\1\121\61\0\3\212\1\0\1\212\103\0\11\24"+
"\2\0\7\24\1\0\2\24\1\0\5\24\7\0\12\24"+
"\1\256\3\24\30\0\11\24\2\0\7\24\1\0\2\24"+
"\1\0\5\24\7\0\1\257\15\24\30\0\11\24\2\0"+
"\7\24\1\0\2\24\1\0\5\24\7\0\1\260\15\24"+
"\30\0\7\24\1\261\1\24\2\0\7\24\1\0\2\24"+
"\1\0\5\24\7\0\16\24\30\0\11\24\2\0\7\24"+
"\1\0\1\262\1\24\1\0\5\24\7\0\16\24\30\0"+
"\11\24\2\0\7\24\1\0\1\263\1\24\1\0\5\24"+
"\7\0\16\24\30\0\3\24\1\264\5\24\2\0\7\24"+
"\1\24\1\220\14\24\30\0\11\24\2\0\7\24\1\0"+
"\1\221\1\24\1\0\5\24\1\36\1\0\1\37\4\0"+
"\16\24\30\0\11\24\2\0\7\24\1\0\2\24\1\0"+
"\5\24\7\0\12\24\1\222\3\24\30\0\11\24\2\0"+
"\7\24\1\0\2\24\1\0\5\24\7\0\6\24\1\223"+
"\7\24\30\0\11\24\2\0\7\24\1\0\2\24\1\0"+
"\5\24\7\0\3\24\1\224\3\24\1\225\6\24\30\0"+
"\11\24\2\0\7\24\1\0\2\24\1\0\5\24\7\0"+
"\4\24\1\226\11\24\30\0\11\24\2\0\7\24\1\0"+
"\2\24\1\0\5\24\7\0\7\24\1\227\6\24\27\0"+
"\13\135\1\0\20\135\1\230\1\137\1\135\1\0\50\135"+
"\34\0\1\231\53\0\110\135\13\140\1\0\21\140\1\141"+
"\1\230\1\0\160\140\36\0\1\232\52\0\11\24\2\0"+
"\7\24\1\0\2\24\1\0\5\24\7\0\2\24\1\233"+
"\13\24\30\0\11\24\2\0\7\24\1\0\2\24\1\0"+
"\5\24\7\0\3\24\1\234\12\24\30\0\11\24\2\0"+
"\7\24\1\0\2\24\1\0\5\24\7\0\4\24\1\235"+
"\11\24\30\0\3\24\1\236\4\24\1\237\2\0\7\24"+
"\1\0\2\24\1\0\5\24\7\0\16\24\30\0\11\24"+
"\2\0\7\24\1\0\2\24\1\0\2\24\1\265\2\24"+
"\7\0\16\24\30\0\11\24\2\0\7\24\1\0\2\24"+
"\1\0\5\24\7\0\3\24\1\266\12\24\27\0\34\227"+
"\1\267\1\270\52\227\35\230\1\271\1\272\51\230\1\0"+
"\11\24\2\0\7\24\1\0\1\273\1\24\1\0\5\24"+
"\7\0\16\24\30\0\11\24\2\0\7\24\1\0\2\24"+
"\1\0\5\24\7\0\4\24\1\274\11\24\30\0\11\24"+
"\2\0\7\24\1\0\2\24\1\0\5\24\7\0\3\24"+
"\1\275\12\24\30\0\6\24\1\276\2\24\2\0\7\24"+
"\1\0\2\24\1\0\5\24\7\0\16\24\30\0\11\24"+
"\2\0\7\24\1\0\2\24\1\0\5\24\7\0\3\24"+
"\1\277\12\24\30\0\10\24\1\300\2\0\7\24\1\0"+
"\2\24\1\0\5\24\7\0\16\24\30\0\7\24\1\301"+
"\1\24\2\0\7\24\1\0\2\24\1\0\5\24\7\0"+
"\16\24\30\0\10\24\1\302\2\0\7\24\1\0\2\24"+
"\1\0\5\24\7\0\16\24\27\0\34\203\1\303\1\304"+
"\162\203\145\206\1\305\1\306\51\206\1\0\10\24\1\307"+
"\2\0\7\24\1\0\2\24\1\0\5\24\7\0\11\24"+
"\1\240\4\24\30\0\11\24\2\0\7\24\1\0\2\24"+
"\1\0\5\24\7\0\1\24\1\241\14\24\30\0\11\24"+
"\2\0\7\24\1\0\2\24\1\0\5\24\7\0\1\242"+
"\15\24\30\0\11\24\2\0\7\24\1\0\2\24\1\0"+
"\5\24\7\0\10\24\1\243\5\24\30\0\11\24\2\0"+
"\7\24\1\0\2\24\1\0\5\24\7\0\3\24\1\244"+
"\12\24\30\0\11\24\2\0\7\24\1\0\1\245\1\24"+
"\1\0\5\24\7\0\16\24\30\0\6\24\1\246\2\24"+
"\2\0\7\24\1\0\2\24\1\0\5\24\7\0\16\24"+
"\30\0\11\24\2\0\7\24\1\0\2\24\1\0\5\24"+
"\7\0\5\24\1\310\10\24\30\0\11\24\2\0\7\24"+
"\1\0\2\24\1\0\5\24\7\0\2\24\1\311\13\24"+
"\7\0\7\24\1\247\6\24\111\0\1\250\107\0\1\251"+
"\107\0\1\252\107\0\1\253\62\0\1\206\1\0\1\105"+
"\2\207\45\0\1\105\34\205\1\254\1\255\52\205\35\210"+
"\1\256\1\257\51\210\1\0\5\211\2\0\1\211\1\116"+
"\3\0\1\211\2\0\1\211\1\116\2\0\2\211\15\0"+
"\1\211\1\0\1\211\3\0\1\211\37\0\1\212\1\0"+
"\1\212\1\0\1\212\3\0\1\116\7\0\1\116\67\0"+
"\1\213\3\0\1\213\3\0\1\116\7\0\1\116\67\0"+
"\3\214\1\0\1\214\21\0\1\121\61\0\3\214\1\0"+
"\1\214\103\0\11\24\2\0\7\24\1\0\2\24\1\0"+
"\5\24\7\0\12\24\1\260\3\24\30\0\11\24\2\0"+
"\7\24\1\0\2\24\1\0\5\24\7\0\1\261\15\24"+
"\30\0\11\24\2\0\7\24\1\0\2\24\1\0\5\24"+
"\7\0\10\24\1\312\5\24\30\0\11\24\2\0\7\24"+
"\1\0\2\24\1\0\4\24\1\313\7\0\16\24\30\0"+
"\11\24\2\0\7\24\1\0\1\314\1\24\1\0\5\24"+
"\7\0\16\24\27\0\34\227\1\315\1\316\162\227\145\230"+
"\1\317\1\320\51\230\1\0\11\24\2\0\7\24\1\0"+
"\2\24\1\0\4\24\1\321\7\0\16\24\30\0\11\24"+
"\2\0\7\24\1\0\2\24\1\0\5\24\7\0\7\24"+
"\1\322\6\24\30\0\11\24\2\0\7\24\1\0\2\24"+
"\1\0\5\24\7\0\3\24\1\323\12\24\30\0\11\24"+
"\2\0\7\24\1\0\2\24\1\0\4\24\1\324\7\0"+
"\7\0\1\262\15\24\30\0\7\24\1\263\1\24\2\0"+
"\7\24\1\0\2\24\1\0\5\24\7\0\16\24\30\0"+
"\11\24\2\0\7\24\1\0\1\264\1\24\1\0\5\24"+
"\7\0\16\24\30\0\11\24\2\0\7\24\1\0\1\265"+
"\1\24\1\0\5\24\7\0\16\24\30\0\3\24\1\266"+
"\5\24\2\0\7\24\1\0\2\24\1\0\5\24\7\0"+
"\16\24\30\0\11\24\2\0\7\24\1\0\2\24\1\0"+
"\5\24\7\0\2\24\1\325\13\24\30\0\11\24\2\0"+
"\7\24\1\0\2\24\1\0\5\24\7\0\1\326\15\24"+
"\30\0\11\24\2\0\7\24\1\0\1\327\1\24\1\0"+
"\5\24\7\0\16\24\27\0\34\203\1\330\1\304\106\203"+
"\1\331\1\304\52\203\35\206\1\305\1\332\106\206\1\305"+
"\1\330\51\206\1\0\10\24\1\333\2\0\7\24\1\0"+
"\2\24\1\0\5\24\7\0\16\24\30\0\11\24\2\0"+
"\7\24\1\0\2\24\1\0\5\24\7\0\1\334\15\24"+
"\2\24\1\267\2\24\7\0\16\24\30\0\11\24\2\0"+
"\7\24\1\0\2\24\1\0\5\24\7\0\3\24\1\270"+
"\12\24\27\0\34\231\1\271\1\272\52\231\35\232\1\273"+
"\1\274\51\232\1\0\11\24\2\0\7\24\1\0\1\275"+
"\1\24\1\0\5\24\7\0\16\24\30\0\11\24\2\0"+
"\7\24\1\0\2\24\1\0\5\24\7\0\4\24\1\276"+
"\11\24\30\0\11\24\2\0\7\24\1\0\2\24\1\0"+
"\5\24\7\0\3\24\1\277\12\24\30\0\6\24\1\300"+
"\2\24\2\0\7\24\1\0\2\24\1\0\5\24\7\0"+
"\16\24\30\0\11\24\2\0\7\24\1\0\2\24\1\0"+
"\5\24\7\0\3\24\1\301\12\24\30\0\10\24\1\302"+
"\2\0\7\24\1\0\2\24\1\0\5\24\7\0\16\24"+
"\30\0\7\24\1\303\1\24\2\0\7\24\1\0\2\24"+
"\1\0\5\24\7\0\16\24\30\0\10\24\1\304\2\0"+
"\7\24\1\0\2\24\1\0\5\24\7\0\16\24\27\0"+
"\34\205\1\305\1\306\162\205\145\210\1\307\1\310\51\210"+
"\1\0\10\24\1\311\2\0\7\24\1\0\2\24\1\0"+
"\5\24\7\0\16\24\30\0\11\24\2\0\7\24\1\0"+
"\2\24\1\0\5\24\7\0\5\24\1\312\10\24\30\0"+
"\11\24\2\0\7\24\1\0\2\24\1\0\5\24\7\0"+
"\2\24\1\313\13\24\30\0\11\24\2\0\7\24\1\0"+
"\2\24\1\0\5\24\7\0\10\24\1\314\5\24\30\0"+
"\11\24\2\0\7\24\1\0\2\24\1\0\4\24\1\315"+
"\7\0\16\24\30\0\11\24\2\0\7\24\1\0\1\316"+
"\1\24\1\0\5\24\7\0\16\24\27\0\34\231\1\317"+
"\1\320\162\231\145\232\1\321\1\322\51\232\1\0\11\24"+
"\2\0\7\24\1\0\2\24\1\0\4\24\1\323\7\0"+
"\16\24\30\0\11\24\2\0\7\24\1\0\2\24\1\0"+
"\5\24\7\0\7\24\1\324\6\24\30\0\11\24\2\0"+
"\7\24\1\0\2\24\1\0\5\24\7\0\3\24\1\325"+
"\12\24\30\0\11\24\2\0\7\24\1\0\2\24\1\0"+
"\4\24\1\326\7\0\16\24\30\0\11\24\2\0\7\24"+
"\1\0\2\24\1\0\5\24\7\0\2\24\1\327\13\24"+
"\30\0\11\24\2\0\7\24\1\0\2\24\1\0\5\24"+
"\7\0\4\24\1\335\11\24\30\0\11\24\2\0\7\24"+
"\1\0\2\24\1\0\5\24\7\0\1\24\1\336\14\24"+
"\27\0\34\227\1\337\1\316\106\227\1\340\1\316\52\227"+
"\35\230\1\317\1\341\106\230\1\317\1\337\51\230\1\0"+
"\7\0\1\330\15\24\30\0\11\24\2\0\7\24\1\0"+
"\1\331\1\24\1\0\5\24\7\0\16\24\27\0\34\205"+
"\1\332\1\306\106\205\1\333\1\306\52\205\35\210\1\307"+
"\1\334\106\210\1\307\1\332\51\210\1\0\10\24\1\335"+
"\2\0\7\24\1\0\2\24\1\0\5\24\7\0\16\24"+
"\30\0\11\24\2\0\7\24\1\0\2\24\1\0\5\24"+
"\7\0\1\336\15\24\30\0\11\24\2\0\7\24\1\0"+
"\2\24\1\0\5\24\7\0\4\24\1\337\11\24\30\0"+
"\11\24\2\0\7\24\1\0\2\24\1\0\5\24\7\0"+
"\4\24\1\342\11\24\30\0\11\24\2\0\7\24\1\0"+
"\2\24\1\0\5\24\7\0\1\24\1\343\14\24\30\0"+
"\11\24\2\0\7\24\1\0\2\24\1\0\5\24\7\0"+
"\4\24\1\344\11\24\30\0\10\24\1\345\2\0\7\24"+
"\1\0\2\24\1\0\5\24\7\0\16\24\27\0\34\203"+
"\1\346\1\304\52\203\35\206\1\305\1\347\51\206\1\0"+
"\11\24\2\0\7\24\1\0\2\24\1\0\5\24\7\0"+
"\11\24\1\350\4\24\27\0\34\227\1\351\1\316\52\227"+
"\35\230\1\317\1\352\51\230\1\0\11\24\2\0\7\24"+
"\1\0\2\24\1\0\2\24\1\353\2\24\7\0\16\24"+
"\27\0\34\203\1\354\1\304\52\203\35\206\1\305\1\355"+
"\51\206\34\227\1\356\1\316\52\227\35\230\1\317\1\357"+
"\51\230\1\0\11\24\2\0\7\24\1\0\1\360\1\24"+
"\1\0\5\24\7\0\16\24\27\0";
"\1\24\1\340\14\24\27\0\34\231\1\341\1\320\106\231"+
"\1\342\1\320\52\231\35\232\1\321\1\343\106\232\1\321"+
"\1\341\51\232\1\0\11\24\2\0\7\24\1\0\2\24"+
"\1\0\5\24\7\0\4\24\1\344\11\24\30\0\11\24"+
"\2\0\7\24\1\0\2\24\1\0\5\24\7\0\1\24"+
"\1\345\14\24\30\0\11\24\2\0\7\24\1\0\2\24"+
"\1\0\5\24\7\0\4\24\1\346\11\24\30\0\10\24"+
"\1\347\2\0\7\24\1\0\2\24\1\0\5\24\7\0"+
"\16\24\27\0\34\205\1\350\1\306\52\205\35\210\1\307"+
"\1\351\51\210\1\0\11\24\2\0\7\24\1\0\2\24"+
"\1\0\5\24\7\0\11\24\1\352\4\24\27\0\34\231"+
"\1\353\1\320\52\231\35\232\1\321\1\354\51\232\1\0"+
"\11\24\2\0\7\24\1\0\2\24\1\0\2\24\1\355"+
"\2\24\7\0\16\24\27\0\34\205\1\356\1\306\52\205"+
"\35\210\1\307\1\357\51\210\34\231\1\360\1\320\52\231"+
"\35\232\1\321\1\361\51\232\1\0\11\24\2\0\7\24"+
"\1\0\1\362\1\24\1\0\5\24\7\0\16\24\27\0";
private static int [] zzUnpackTrans() {
int [] result = new int[11808];
int [] result = new int[11880];
int offset = 0;
offset = zzUnpackTrans(ZZ_TRANS_PACKED_0, offset, result);
return result;
@@ -544,17 +545,17 @@ class _PythonLexer implements FlexLexer {
private static final int [] ZZ_ATTRIBUTE = zzUnpackAttribute();
private static final String ZZ_ATTRIBUTE_PACKED_0 =
"\3\0\1\11\1\1\6\11\4\1\1\11\44\1\14\11"+
"\1\0\3\1\1\11\4\1\4\0\1\11\1\1\1\0"+
"\1\11\10\1\1\11\27\1\3\11\1\1\1\11\1\1"+
"\5\11\1\1\2\11\1\1\1\11\2\1\1\11\1\0"+
"\5\1\1\0\12\1\1\11\17\1\4\11\1\0\2\1"+
"\1\0\11\1\4\0\10\1\1\0\2\1\1\0\6\1"+
"\1\0\2\1\1\0\16\1\1\11\6\1\2\0\1\1"+
"\2\0\6\1";
"\3\0\1\11\1\1\6\11\4\1\1\11\44\1\11\11"+
"\1\1\2\11\1\0\3\1\1\11\4\1\4\0\1\11"+
"\1\1\1\0\1\11\10\1\1\11\27\1\3\11\1\1"+
"\1\11\1\1\5\11\1\1\2\11\1\1\2\11\1\0"+
"\2\1\1\11\1\0\5\1\1\0\12\1\1\11\17\1"+
"\4\11\1\0\2\1\1\0\11\1\4\0\10\1\1\0"+
"\2\1\1\0\6\1\1\0\2\1\1\0\16\1\1\11"+
"\6\1\2\0\1\1\2\0\6\1";
private static int [] zzUnpackAttribute() {
int [] result = new int[240];
int [] result = new int[242];
int offset = 0;
offset = zzUnpackAttribute(ZZ_ATTRIBUTE_PACKED_0, offset, result);
return result;
@@ -866,372 +867,376 @@ return yylength()-i-1;
zzMarkedPos = zzMarkedPosL;
switch (zzAction < 0 ? zzAction : ZZ_ACTION[zzAction]) {
case 82:
case 83:
{ return PyTokenTypes.YIELD_KEYWORD;
}
case 92: break;
case 93: break;
case 11:
{ return PyTokenTypes.INTEGER_LITERAL;
}
case 93: break;
case 94: break;
case 19:
{ return PyTokenTypes.DIV;
}
case 94: break;
case 95: break;
case 20:
{ return PyTokenTypes.PERC;
}
case 95: break;
case 96: break;
case 3:
{ return PyTokenTypes.BACKSLASH;
}
case 96: break;
case 97: break;
case 28:
{ return PyTokenTypes.RPAR;
}
case 97: break;
case 98: break;
case 10:
{ return PyTokenTypes.BAD_CHARACTER;
}
case 98: break;
case 99: break;
case 31:
{ return PyTokenTypes.LBRACE;
}
case 99: break;
case 63:
case 100: break;
case 64:
{ yypushback(getSpaceLength(yytext())); return PyTokenTypes.DOCSTRING;
}
case 100: break;
case 101: break;
case 14:
{ return PyTokenTypes.MINUS;
}
case 101: break;
case 79:
case 102: break;
case 80:
{ return PyTokenTypes.BREAK_KEYWORD;
}
case 102: break;
case 103: break;
case 30:
{ return PyTokenTypes.RBRACKET;
}
case 103: break;
case 104: break;
case 1:
{ yypushback(1); yybegin(PENDING_DOCSTRING);
}
case 104: break;
case 105: break;
case 8:
{ yypushback(1); yybegin(USUAL);
}
case 105: break;
case 106: break;
case 13:
{ return PyTokenTypes.DOT;
}
case 106: break;
case 107: break;
case 12:
{ return PyTokenTypes.IDENTIFIER;
}
case 107: break;
case 108: break;
case 27:
{ return PyTokenTypes.LPAR;
}
case 108: break;
case 109: break;
case 25:
{ return PyTokenTypes.LT;
}
case 109: break;
case 110: break;
case 44:
{ return PyTokenTypes.IN_KEYWORD;
}
case 110: break;
case 80:
case 111: break;
case 81:
{ return PyTokenTypes.RAISE_KEYWORD;
}
case 111: break;
case 73:
case 112: break;
case 74:
{ return PyTokenTypes.GTGTEQ;
}
case 112: break;
case 113: break;
case 5:
{ return PyTokenTypes.SPACE;
}
case 113: break;
case 85:
case 114: break;
case 86:
{ return PyTokenTypes.EXCEPT_KEYWORD;
}
case 114: break;
case 115: break;
case 40:
{ return PyTokenTypes.IMAGINARY_LITERAL;
}
case 115: break;
case 116: break;
case 15:
{ return PyTokenTypes.SINGLE_QUOTED_STRING;
}
case 116: break;
case 117: break;
case 7:
{ return PyTokenTypes.FORMFEED;
}
case 117: break;
case 118: break;
case 37:
{ return PyTokenTypes.SEMICOLON;
}
case 118: break;
case 119: break;
case 24:
{ return PyTokenTypes.GT;
}
case 119: break;
case 120: break;
case 29:
{ return PyTokenTypes.LBRACKET;
}
case 120: break;
case 74:
case 121: break;
case 35:
{ return PyTokenTypes.COLON;
}
case 122: break;
case 75:
{ return PyTokenTypes.LTLTEQ;
}
case 121: break;
case 123: break;
case 9:
{ if (zzInput == YYEOF) return PyTokenTypes.DOCSTRING;
else yybegin(USUAL); return PyTokenTypes.SINGLE_QUOTED_STRING;
}
case 122: break;
case 76:
case 124: break;
case 77:
{ return PyTokenTypes.ELSE_KEYWORD;
}
case 123: break;
case 125: break;
case 22:
{ return PyTokenTypes.OR;
}
case 124: break;
case 126: break;
case 48:
{ return PyTokenTypes.MULTEQ;
}
case 125: break;
case 90:
case 127: break;
case 91:
{ return PyTokenTypes.FINALLY_KEYWORD;
}
case 126: break;
case 83:
case 128: break;
case 84:
{ return PyTokenTypes.WHILE_KEYWORD;
}
case 127: break;
case 129: break;
case 18:
{ return PyTokenTypes.MULT;
}
case 128: break;
case 87:
case 130: break;
case 88:
{ return PyTokenTypes.ASSERT_KEYWORD;
}
case 129: break;
case 131: break;
case 51:
{ return PyTokenTypes.FLOORDIV;
}
case 130: break;
case 89:
case 132: break;
case 90:
{ return PyTokenTypes.GLOBAL_KEYWORD;
}
case 131: break;
case 84:
case 133: break;
case 85:
{ return PyTokenTypes.LAMBDA_KEYWORD;
}
case 132: break;
case 134: break;
case 55:
{ return PyTokenTypes.XOREQ;
}
case 133: break;
case 64:
case 135: break;
case 65:
{ return PyTokenTypes.FOR_KEYWORD;
}
case 134: break;
case 136: break;
case 33:
{ return PyTokenTypes.AT;
}
case 135: break;
case 67:
case 137: break;
case 68:
{ return PyTokenTypes.NOT_KEYWORD;
}
case 136: break;
case 138: break;
case 16:
{ return PyTokenTypes.PLUS;
}
case 137: break;
case 139: break;
case 42:
{ return PyTokenTypes.MINUSEQ;
}
case 138: break;
case 140: break;
case 38:
{ yypushback(getSpaceLength(yytext())); yybegin(USUAL); return PyTokenTypes.DOCSTRING;
}
case 139: break;
case 141: break;
case 61:
{ return PyTokenTypes.NE;
}
case 140: break;
case 142: break;
case 34:
{ return PyTokenTypes.COMMA;
}
case 141: break;
case 143: break;
case 47:
{ return PyTokenTypes.EQEQ;
}
case 142: break;
case 144: break;
case 36:
{ return PyTokenTypes.TICK;
}
case 143: break;
case 145: break;
case 49:
{ return PyTokenTypes.EXP;
}
case 144: break;
case 65:
case 146: break;
case 66:
{ return PyTokenTypes.TRIPLE_QUOTED_STRING;
}
case 145: break;
case 91:
case 147: break;
case 92:
{ return PyTokenTypes.CONTINUE_KEYWORD;
}
case 146: break;
case 148: break;
case 60:
{ return PyTokenTypes.LTLT;
}
case 147: break;
case 149: break;
case 58:
{ return PyTokenTypes.LE;
}
case 148: break;
case 66:
case 150: break;
case 67:
{ return PyTokenTypes.AND_KEYWORD;
}
case 149: break;
case 151: break;
case 41:
{ return PyTokenTypes.OR_KEYWORD;
}
case 150: break;
case 78:
case 152: break;
case 79:
{ return PyTokenTypes.PASS_KEYWORD;
}
case 151: break;
case 153: break;
case 62:
{ yypushback(yylength()-1); yybegin(PENDING_DOCSTRING); return PyTokenTypes.COLON;
}
case 154: break;
case 2:
{ return PyTokenTypes.END_OF_LINE_COMMENT;
}
case 152: break;
case 62:
case 155: break;
case 63:
{ if (zzInput == YYEOF) return PyTokenTypes.DOCSTRING;
else yybegin(USUAL); return PyTokenTypes.TRIPLE_QUOTED_STRING;
}
case 153: break;
case 156: break;
case 54:
{ return PyTokenTypes.OREQ;
}
case 154: break;
case 157: break;
case 57:
{ return PyTokenTypes.GTGT;
}
case 155: break;
case 158: break;
case 21:
{ return PyTokenTypes.AND;
}
case 156: break;
case 159: break;
case 50:
{ return PyTokenTypes.DIVEQ;
}
case 157: break;
case 35:
{ yybegin(PENDING_DOCSTRING); return PyTokenTypes.COLON;
}
case 158: break;
case 86:
case 160: break;
case 87:
{ return PyTokenTypes.RETURN_KEYWORD;
}
case 159: break;
case 88:
case 161: break;
case 89:
{ return PyTokenTypes.IMPORT_KEYWORD;
}
case 160: break;
case 162: break;
case 56:
{ return PyTokenTypes.GE;
}
case 161: break;
case 163: break;
case 46:
{ return PyTokenTypes.PLUSEQ;
}
case 162: break;
case 68:
case 164: break;
case 69:
{ return PyTokenTypes.DEF_KEYWORD;
}
case 163: break;
case 165: break;
case 45:
{ return PyTokenTypes.IS_KEYWORD;
}
case 164: break;
case 72:
case 166: break;
case 73:
{ return PyTokenTypes.FLOORDIVEQ;
}
case 165: break;
case 167: break;
case 39:
{ return PyTokenTypes.FLOAT_LITERAL;
}
case 166: break;
case 168: break;
case 4:
{ return PyTokenTypes.LINE_BREAK;
}
case 167: break;
case 169: break;
case 52:
{ return PyTokenTypes.PERCEQ;
}
case 168: break;
case 70:
case 170: break;
case 71:
{ return PyTokenTypes.TRY_KEYWORD;
}
case 169: break;
case 171: break;
case 53:
{ return PyTokenTypes.ANDEQ;
}
case 170: break;
case 172: break;
case 17:
{ return PyTokenTypes.EQ;
}
case 171: break;
case 75:
case 173: break;
case 76:
{ return PyTokenTypes.FROM_KEYWORD;
}
case 172: break;
case 71:
case 174: break;
case 72:
{ return PyTokenTypes.EXPEQ;
}
case 173: break;
case 77:
case 175: break;
case 78:
{ return PyTokenTypes.ELIF_KEYWORD;
}
case 174: break;
case 176: break;
case 32:
{ return PyTokenTypes.RBRACE;
}
case 175: break;
case 81:
case 177: break;
case 82:
{ return PyTokenTypes.CLASS_KEYWORD;
}
case 176: break;
case 178: break;
case 43:
{ return PyTokenTypes.IF_KEYWORD;
}
case 177: break;
case 179: break;
case 6:
{ return PyTokenTypes.TAB;
}
case 178: break;
case 180: break;
case 59:
{ return PyTokenTypes.NE_OLD;
}
case 179: break;
case 181: break;
case 26:
{ return PyTokenTypes.TILDE;
}
case 180: break;
case 182: break;
case 23:
{ return PyTokenTypes.XOR;
}
case 181: break;
case 69:
case 183: break;
case 70:
{ return PyTokenTypes.DEL_KEYWORD;
}
case 182: break;
case 184: break;
default:
if (zzInput == YYEOF && zzStartRead == zzCurrentPos) {
zzAtEOF = true;
@@ -17,7 +17,7 @@ import javax.swing.*;
* User : catherine
*/
public class PythonTestConfigurationType implements ConfigurationType {
public static final String ID = "PythonTestConfigurationType";
private String myId = "tests";
public final PythonDocTestConfigurationFactory PY_DOCTEST_FACTORY = new PythonDocTestConfigurationFactory(this);
public final PythonUnitTestConfigurationFactory PY_UNITTEST_FACTORY = new PythonUnitTestConfigurationFactory(this);
@@ -37,6 +37,13 @@ public class PythonTestConfigurationType implements ConfigurationType {
super(configurationType);
}
@NotNull
public ConfigurationType getType() {
ConfigurationType type = super.getType();
((PythonTestConfigurationType)type).setId("PythonUnitTestConfigurationType");
return type;
}
public RunConfiguration createTemplateConfiguration(Project project) {
return new PythonUnitTestRunConfiguration(new RunConfigurationModule(project), this, "");
}
@@ -56,6 +63,13 @@ public class PythonTestConfigurationType implements ConfigurationType {
return new PythonDocTestRunConfiguration(new RunConfigurationModule(project), this, "");
}
@NotNull
public ConfigurationType getType() {
ConfigurationType type = super.getType();
((PythonTestConfigurationType)type).setId("PythonDocTestRunConfigurationType");
return type;
}
@Override
public String getName() {
return PyBundle.message("runcfg.doctest.display_name");
@@ -71,6 +85,13 @@ public class PythonTestConfigurationType implements ConfigurationType {
return new PyTestRunConfiguration("", new RunConfigurationModule(project), this);
}
@NotNull
public ConfigurationType getType() {
ConfigurationType type = super.getType();
((PythonTestConfigurationType)type).setId("py.test");
return type;
}
@Override
public String getName() {
return PyBundle.message("runcfg.pytest.display_name");
@@ -86,6 +107,13 @@ public class PythonTestConfigurationType implements ConfigurationType {
return new PythonNoseTestRunConfiguration(new RunConfigurationModule(project), this, "");
}
@NotNull
public ConfigurationType getType() {
ConfigurationType type = super.getType();
((PythonTestConfigurationType)type).setId("PythonNoseTestRunConfigurationType");
return type;
}
@Override
public String getName() {
return PyBundle.message("runcfg.nosetests.display_name");
@@ -101,6 +129,13 @@ public class PythonTestConfigurationType implements ConfigurationType {
return new PythonAtTestRunConfiguration(new RunConfigurationModule(project), this, "");
}
@NotNull
public ConfigurationType getType() {
ConfigurationType type = super.getType();
((PythonTestConfigurationType)type).setId("attests");
return type;
}
@Override
public String getName() {
return PyBundle.message("runcfg.attest.display_name");
@@ -125,7 +160,11 @@ public class PythonTestConfigurationType implements ConfigurationType {
@NotNull
@Override
public String getId() {
return ID;
return myId;
}
public void setId(String id) {
myId = id;
}
public ConfigurationFactory[] getConfigurationFactories() {
@@ -36,7 +36,7 @@ public class PythonTestRunConfigurationsConverter extends ConversionProcessor<Ru
final String confType = element.getAttributeValue("type");
final String factoryName = ourTypeToFactoryNameMap.get(confType);
if (factoryName != null) {
element.setAttribute("type", PythonTestConfigurationType.ID);
element.setAttribute("type", PythonTestConfigurationType.getInstance().getId());
element.setAttribute("factoryName", factoryName);
}
}
@@ -0,0 +1,9 @@
class GetCustomerPaymentProfileRequest(CustomerRequest):
_keys = CustomerRequest._keys + ["customerPaymentProfileId"]
<warning descr="Docstring seems to be misplaced">"""
Gets a payment profile by user <caret>Account object and authorize.net
profileid of the payment profile.
"""</warning>
def __init__(self, user, profileid):
CustomerRequest.__init__(self, user,
customerPaymentProfileId=profileid)
@@ -0,0 +1,10 @@
class GetCustomerPaymentProfileRequest(CustomerRequest):
"""
Gets a payment profile by user Account object and authorize.net
profileid of the payment profile.
"""
_keys = CustomerRequest._keys + ["customerPaymentProfileId"]
def __init__(self, user, profileid):
CustomerRequest.__init__(self, user,
customerPaymentProfileId=profileid)
@@ -287,6 +287,11 @@ public class PyQuickFixTest extends PyLightFixtureTestCase {
PyBundle.message("QFIX.remove.decorator"), true, true);
}
public void testMoveDocstring() { //PY-4398
doInspectionTest("MoveDocstring.py", PyStatementEffectInspection.class,
PyBundle.message("QFIX.statement.effect.move.docstring"), true, true);
}
public void testSetFunctionToLiteral() { //PY-3120
setLanguageLevel(LanguageLevel.PYTHON27);
doInspectionTest("SetFunctionToLiteral.py", PySetFunctionToLiteralInspection.class,
@@ -1,5 +1,7 @@
package com.jetbrains.python;
import com.jetbrains.django.lang.template.DjangoTemplateParserTest;
import com.jetbrains.jinja2.Jinja2ParserTest;
import com.jetbrains.python.codeInsight.PyCompletionPatternsTest;
import com.jetbrains.python.inspections.*;
import com.jetbrains.python.refactoring.*;
@@ -81,7 +83,9 @@ public class PythonAllTestsSuite {
PyUnusedImportTest.class,
PyDeprecationTest.class,
PythonHighlightingLexerTest.class,
PyOldStyleClassInspectionTest.class
PyOldStyleClassInspectionTest.class,
Jinja2ParserTest.class,
DjangoTemplateParserTest.class
};
public static TestSuite suite() {
@@ -145,6 +145,16 @@ public class PythonHighlightingLexerTest extends PyLexerTestCase {
"Py:SINGLE_QUOTED_STRING");
}
public void testNotDocstring() { // PY-4481
doTest(LanguageLevel.PYTHON27, "d = {\n" +
" 'abc': 'def',\n" +
" 'ghi': 'jkl'\n" +
" }",
"Py:IDENTIFIER", "Py:SPACE", "Py:EQ", "Py:SPACE", "Py:LBRACE", "Py:LINE_BREAK", "Py:SPACE", "Py:SINGLE_QUOTED_STRING",
"Py:COLON", "Py:SPACE", "Py:SINGLE_QUOTED_STRING", "Py:COMMA", "Py:LINE_BREAK", "Py:SPACE", "Py:SINGLE_QUOTED_STRING",
"Py:COLON", "Py:SPACE", "Py:SINGLE_QUOTED_STRING", "Py:LINE_BREAK", "Py:SPACE", "Py:RBRACE");
}
private static void doTest(LanguageLevel languageLevel, String text, String... expectedTokens) {
doLexerTest(text, new PythonHighlightingLexer(languageLevel), expectedTokens);
}