From: Jan P. <jp...@us...> - 2007-09-09 14:38:51
|
Update of /cvsroot/e-p-i-c/org.epic.perleditor/src/org/epic/core/model In directory sc8-pr-cvs17:/tmp/cvs-serv31383/src/org/epic/core/model Modified Files: SourceFile.java Log Message: Fixed bug [ 1772573 ] subroutine folding fails if all parameters are optional. Index: SourceFile.java =================================================================== RCS file: /cvsroot/e-p-i-c/org.epic.perleditor/src/org/epic/core/model/SourceFile.java,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- SourceFile.java 6 Apr 2007 14:14:52 -0000 1.6 +++ SourceFile.java 9 Sep 2007 14:38:48 -0000 1.7 @@ -167,6 +167,7 @@ private PerlToken subKeyword; private PerlToken useKeyword; private PerlToken subName; + private boolean inSubProto; public ParsingState(List tokens) { @@ -250,20 +251,33 @@ private void updateSubState() throws BadLocationException { - if (subKeyword == null) + if (type == PerlTokenTypes.KEYWORD_SUB) { - if (type == PerlTokenTypes.KEYWORD_SUB) subKeyword = t; + subKeyword = t; + subName = null; + inSubProto = false; } - else + if (subKeyword != null) { if (subName == null && type == PerlTokenTypes.WORD) { subName = t; } - else if (type == PerlTokenTypes.SEMI) + else if (!inSubProto && type == PerlTokenTypes.SEMI) { + // Here we apparently have something like sub foo; + // But not something like sub foo($;$) { ... } subKeyword = null; subName = null; + inSubProto = false; + } + else if (type == PerlTokenTypes.OPEN_PAREN) + { + inSubProto = true; + } + else if (type == PerlTokenTypes.CLOSE_PAREN) + { + inSubProto = false; } else if (type == PerlTokenTypes.OPEN_CURLY) { @@ -275,6 +289,7 @@ } subKeyword = null; subName = null; + inSubProto = false; } } } |