View | Details | Raw Unified | Return to bug 135083
Collapse All | Expand All

(-)compiler/org/eclipse/jdt/internal/compiler/parser/diagnose/RangeUtil.java (-23 / +1 lines)
Lines 169-197 Link Here
169
			}
169
			}
170
		}
170
		}
171
	}
171
	}
172
	
172
		
173
	public static boolean isInInterval(int start, int end, int[] intervalStart, int[] intervalEnd) {
174
		int length = intervalStart.length;
175
		for (int i = 0; i < length; i++) {
176
			if(intervalStart[i] <= start && intervalEnd[i] >= end) {
177
				return true;
178
			} else if(intervalStart[i] > end) {
179
				return false;
180
			}
181
		}
182
		return false;
183
	}
184
	
185
	public static int getPreviousInterval(int start, int end, int[] intervalStart, int[] intervalEnd) {
186
		int length = intervalStart.length;
187
		for (int i = 0; i < length; i++) {
188
			if(intervalStart[i] > end) {
189
				return i - 1;
190
			}
191
		}
192
		return length - 1;
193
	}
194
	
195
	public static boolean containsIgnoredBody(AbstractMethodDeclaration method){
173
	public static boolean containsIgnoredBody(AbstractMethodDeclaration method){
196
		return !method.isDefaultConstructor()
174
		return !method.isDefaultConstructor()
197
			&& !method.isClinit()
175
			&& !method.isClinit()
(-)compiler/org/eclipse/jdt/internal/compiler/parser/diagnose/LexStream.java (-5 / +11 lines)
Lines 48-53 Link Here
48
	private int[] intervalFlagsToSkip;
48
	private int[] intervalFlagsToSkip;
49
	
49
	
50
	private int previousInterval = -1;
50
	private int previousInterval = -1;
51
	private int currentInterval = -1;
51
	
52
	
52
	public LexStream(int size, Scanner scanner, int[] intervalStartToSkip, int[] intervalEndToSkip, int[] intervalFlagsToSkip, int firstToken, int init, int eof) {
53
	public LexStream(int size, Scanner scanner, int[] intervalStartToSkip, int[] intervalEndToSkip, int[] intervalFlagsToSkip, int firstToken, int init, int eof) {
53
		this.tokenCache = new Token[size];
54
		this.tokenCache = new Token[size];
Lines 78-84 Link Here
78
				if(tokenKind != TokenNameEOF) {
79
				if(tokenKind != TokenNameEOF) {
79
					int start = scanner.getCurrentTokenStartPosition();
80
					int start = scanner.getCurrentTokenStartPosition();
80
					int end = scanner.getCurrentTokenEndPosition();
81
					int end = scanner.getCurrentTokenEndPosition();
81
					if(!RangeUtil.isInInterval(start, end, intervalStartToSkip, intervalEndToSkip)) {
82
					
83
					int nextInterval = currentInterval + 1;
84
					if(intervalStartToSkip.length == 0 ||
85
							nextInterval >= intervalStartToSkip.length ||
86
							start < intervalStartToSkip[nextInterval]) {
82
						Token token = new Token();
87
						Token token = new Token();
83
						token.kind = tokenKind;
88
						token.kind = tokenKind;
84
						token.name = scanner.getCurrentTokenSource();
89
						token.name = scanner.getCurrentTokenSource();
Lines 86-103 Link Here
86
						token.end = end;
91
						token.end = end;
87
						token.line = scanner.getLineNumber(end);
92
						token.line = scanner.getLineNumber(end);
88
						
93
						
89
						int pInterval = RangeUtil.getPreviousInterval(start, end, intervalStartToSkip, intervalEndToSkip);
94
						if(currentInterval != previousInterval && (intervalFlagsToSkip[currentInterval] & RangeUtil.IGNORE) == 0){
90
						if(pInterval != previousInterval && (intervalFlagsToSkip[previousInterval + 1] & RangeUtil.IGNORE) == 0){
91
							token.flags = IS_AFTER_JUMP;
95
							token.flags = IS_AFTER_JUMP;
92
							if((intervalFlagsToSkip[pInterval] & RangeUtil.LBRACE_MISSING) != 0){
96
							if((intervalFlagsToSkip[currentInterval] & RangeUtil.LBRACE_MISSING) != 0){
93
								token.flags |= LBRACE_MISSING;
97
								token.flags |= LBRACE_MISSING;
94
							}
98
							}
95
						}
99
						}
96
						previousInterval = pInterval;
100
						previousInterval = currentInterval;
97
101
98
						tokenCache[++tokenCacheIndex % length] = token;
102
						tokenCache[++tokenCacheIndex % length] = token;
99
						
103
						
100
						tokenNotFound = false;
104
						tokenNotFound = false;
105
					} else {
106
						scanner.resetTo(intervalEndToSkip[++currentInterval] + 1, scanner.eofPosition - 1);
101
					}
107
					}
102
				} else {
108
				} else {
103
					int start = scanner.getCurrentTokenStartPosition();
109
					int start = scanner.getCurrentTokenStartPosition();

Return to bug 135083