Lines 743-752
Link Here
|
743 |
} |
743 |
} |
744 |
|
744 |
|
745 |
private void parseLocalVariable() { |
745 |
private void parseLocalVariable() { |
746 |
if (this.scanner.nextToken() != Scanner.LOCAL_VAR) { |
746 |
if (this.scanner.nextToken() != Scanner.LOCAL_VAR) { |
747 |
malformedKey(); |
747 |
malformedKey(); |
748 |
return; |
748 |
return; |
749 |
} |
749 |
} |
750 |
char[] varName = this.scanner.getTokenSource(); |
750 |
char[] varName = this.scanner.getTokenSource(); |
751 |
if (Character.isDigit(varName[0])) { |
751 |
if (Character.isDigit(varName[0])) { |
752 |
int index = Integer.parseInt(new String(varName)); |
752 |
int index = Integer.parseInt(new String(varName)); |
Lines 759-792
Link Here
|
759 |
} else { |
759 |
} else { |
760 |
int occurrenceCount = 0; |
760 |
int occurrenceCount = 0; |
761 |
if (this.scanner.isAtLocalVariableStart()) { |
761 |
if (this.scanner.isAtLocalVariableStart()) { |
762 |
if (this.scanner.nextToken() != Scanner.LOCAL_VAR) { |
762 |
if (this.scanner.nextToken() != Scanner.LOCAL_VAR) { |
763 |
malformedKey(); |
763 |
malformedKey(); |
764 |
return; |
764 |
return; |
765 |
} |
765 |
} |
766 |
char[] occurrence = this.scanner.getTokenSource(); |
766 |
char[] occurrence = this.scanner.getTokenSource(); |
767 |
occurrenceCount = Integer.parseInt(new String(occurrence)); |
767 |
occurrenceCount = Integer.parseInt(new String(occurrence)); |
768 |
} |
768 |
} |
769 |
consumeLocalVar(varName, occurrenceCount); |
769 |
consumeLocalVar(varName, occurrenceCount); |
770 |
} |
770 |
} |
771 |
} |
771 |
} |
772 |
|
772 |
|
773 |
private void parseMethod() { |
773 |
private void parseMethod() { |
774 |
char[] selector = this.scanner.getTokenSource(); |
774 |
char[] selector = this.scanner.getTokenSource(); |
775 |
this.scanner.skipMethodSignature(); |
775 |
this.scanner.skipMethodSignature(); |
776 |
char[] signature = this.scanner.getTokenSource(); |
776 |
char[] signature = this.scanner.getTokenSource(); |
777 |
consumeMethod(selector, signature); |
777 |
consumeMethod(selector, signature); |
778 |
if (this.scanner.isAtThrownStart()) { |
778 |
if (this.scanner.isAtThrownStart()) { |
779 |
parseThrownExceptions(); |
779 |
parseThrownExceptions(); |
780 |
} |
780 |
} |
781 |
if (this.scanner.isAtParametersStart()) |
781 |
if (this.scanner.isAtParametersStart()) |
782 |
parseParameterizedMethod(); |
782 |
parseParameterizedMethod(); |
783 |
} |
783 |
} |
784 |
|
784 |
|
785 |
private void parseAnnotation() { |
785 |
private void parseAnnotation() { |
|
|
786 |
/* |
787 |
* The call parser.parse() might have a side-effect on the current token type |
788 |
* See bug 264443 |
789 |
*/ |
790 |
int token = this.scanner.token; |
786 |
BindingKeyParser parser = newParser(); |
791 |
BindingKeyParser parser = newParser(); |
787 |
parser.parse(); |
792 |
parser.parse(); |
788 |
consumeParser(parser); |
793 |
consumeParser(parser); |
789 |
consumeAnnotation(); |
794 |
consumeAnnotation(); |
|
|
795 |
this.scanner.token = token; |
790 |
} |
796 |
} |
791 |
|
797 |
|
792 |
private void parseCapture() { |
798 |
private void parseCapture() { |
Lines 803-811
Link Here
|
803 |
} |
809 |
} |
804 |
|
810 |
|
805 |
private void parseCaptureWildcard() { |
811 |
private void parseCaptureWildcard() { |
|
|
812 |
/* |
813 |
* The call parser.parse() might have a side-effect on the current token type |
814 |
* See bug 264443 |
815 |
*/ |
816 |
int token = this.scanner.token; |
806 |
BindingKeyParser parser = newParser(); |
817 |
BindingKeyParser parser = newParser(); |
807 |
parser.parse(); |
818 |
parser.parse(); |
808 |
consumeParser(parser); |
819 |
consumeParser(parser); |
|
|
820 |
this.scanner.token = token; |
809 |
} |
821 |
} |
810 |
|
822 |
|
811 |
private void parseField() { |
823 |
private void parseField() { |
Lines 815-820
Link Here
|
815 |
} |
827 |
} |
816 |
|
828 |
|
817 |
private void parseThrownExceptions() { |
829 |
private void parseThrownExceptions() { |
|
|
830 |
/* |
831 |
* The call parser.parse() might have a side-effect on the current token type |
832 |
* See bug 264443 |
833 |
*/ |
834 |
int token = this.scanner.token; |
818 |
while (this.scanner.isAtThrownStart()) { |
835 |
while (this.scanner.isAtThrownStart()) { |
819 |
this.scanner.skipThrownStart(); |
836 |
this.scanner.skipThrownStart(); |
820 |
BindingKeyParser parser = newParser(); |
837 |
BindingKeyParser parser = newParser(); |
Lines 822-827
Link Here
|
822 |
consumeParser(parser); |
839 |
consumeParser(parser); |
823 |
consumeException(); |
840 |
consumeException(); |
824 |
} |
841 |
} |
|
|
842 |
this.scanner.token = token; |
825 |
} |
843 |
} |
826 |
|
844 |
|
827 |
private void parseParameterizedType(char[] typeName, boolean isRaw) { |
845 |
private void parseParameterizedType(char[] typeName, boolean isRaw) { |
Lines 860-868
Link Here
|
860 |
|
878 |
|
861 |
private void parseReturnType() { |
879 |
private void parseReturnType() { |
862 |
this.scanner.index++; // skip ')' |
880 |
this.scanner.index++; // skip ')' |
|
|
881 |
/* |
882 |
* The call parser.parse() might have a side-effect on the current token type |
883 |
* See bug 264443 |
884 |
*/ |
885 |
int token = this.scanner.token; |
863 |
BindingKeyParser parser = newParser(); |
886 |
BindingKeyParser parser = newParser(); |
864 |
parser.parse(); |
887 |
parser.parse(); |
865 |
consumeParser(parser); |
888 |
consumeParser(parser); |
|
|
889 |
this.scanner.token = token; |
866 |
} |
890 |
} |
867 |
|
891 |
|
868 |
private void parseSecondaryType() { |
892 |
private void parseSecondaryType() { |
Lines 871-887
Link Here
|
871 |
} |
895 |
} |
872 |
|
896 |
|
873 |
private void parseTypeArgument() { |
897 |
private void parseTypeArgument() { |
|
|
898 |
/* |
899 |
* The call parser.parse() might have a side-effect on the current token type |
900 |
* See bug 264443 |
901 |
*/ |
902 |
int token = this.scanner.token; |
874 |
BindingKeyParser parser = newParser(); |
903 |
BindingKeyParser parser = newParser(); |
875 |
parser.parse(); |
904 |
parser.parse(); |
876 |
consumeParser(parser); |
905 |
consumeParser(parser); |
|
|
906 |
this.scanner.token = token; |
877 |
} |
907 |
} |
878 |
|
908 |
|
879 |
private void parseTypeWithCapture() { |
909 |
private void parseTypeWithCapture() { |
880 |
if (this.scanner.nextToken() != Scanner.CAPTURE) return; |
910 |
if (this.scanner.nextToken() != Scanner.CAPTURE) return; |
|
|
911 |
/* |
912 |
* The call parser.parse() might have a side-effect on the current token type |
913 |
* See bug 264443 |
914 |
*/ |
915 |
int token = this.scanner.token; |
881 |
BindingKeyParser parser = newParser(); |
916 |
BindingKeyParser parser = newParser(); |
882 |
parser.parse(); |
917 |
parser.parse(); |
883 |
consumeParser(parser); |
918 |
consumeParser(parser); |
884 |
consumeTypeWithCapture(); |
919 |
consumeTypeWithCapture(); |
|
|
920 |
this.scanner.token = token; |
885 |
} |
921 |
} |
886 |
|
922 |
|
887 |
private void parseTypeVariable() { |
923 |
private void parseTypeVariable() { |
Lines 941-949
Link Here
|
941 |
} |
977 |
} |
942 |
|
978 |
|
943 |
private void parseWildcardBound() { |
979 |
private void parseWildcardBound() { |
|
|
980 |
/* |
981 |
* The call parser.parse() might have a side-effect on the current token type |
982 |
* See bug 264443 |
983 |
*/ |
984 |
int token = this.scanner.token; |
944 |
BindingKeyParser parser = newParser(); |
985 |
BindingKeyParser parser = newParser(); |
945 |
parser.parse(); |
986 |
parser.parse(); |
946 |
consumeParser(parser); |
987 |
consumeParser(parser); |
|
|
988 |
this.scanner.token = token; |
947 |
} |
989 |
} |
948 |
|
990 |
|
949 |
} |
991 |
} |