99 checksrc19("-source 1.9", "-target 1.9"); |
99 checksrc19("-source 1.9", "-target 1.9"); |
100 checksrc19("-source 9", "-target 9"); |
100 checksrc19("-source 9", "-target 9"); |
101 checksrc19("-target 1.9"); |
101 checksrc19("-target 1.9"); |
102 checksrc19("-target 9"); |
102 checksrc19("-target 9"); |
103 |
103 |
104 fail("-source 7", "-target 1.6", "X.java"); |
104 fail("-source 7", "-target 1.6", "Base.java"); |
105 fail("-source 8", "-target 1.6", "X.java"); |
105 fail("-source 8", "-target 1.6", "Base.java"); |
106 fail("-source 8", "-target 1.7", "X.java"); |
106 fail("-source 8", "-target 1.7", "Base.java"); |
107 fail("-source 9", "-target 1.7", "X.java"); |
107 fail("-source 9", "-target 1.7", "Base.java"); |
108 fail("-source 9", "-target 1.8", "X.java"); |
108 fail("-source 9", "-target 1.8", "Base.java"); |
|
109 |
|
110 fail("-source 1.5", "-target 1.5", "Base.java"); |
|
111 fail("-source 1.4", "-target 1.4", "Base.java"); |
|
112 fail("-source 1.3", "-target 1.3", "Base.java"); |
|
113 fail("-source 1.2", "-target 1.2", "Base.java"); |
109 |
114 |
110 if (failedCases > 0) { |
115 if (failedCases > 0) { |
111 System.err.println("failedCases = " + String.valueOf(failedCases)); |
116 System.err.println("failedCases = " + String.valueOf(failedCases)); |
112 throw new Error("Test failed"); |
117 throw new Error("Test failed"); |
113 } |
118 } |
114 |
119 |
115 } |
120 } |
116 |
|
117 |
|
118 |
121 |
119 protected void printargs(String fname,String... args) { |
122 protected void printargs(String fname,String... args) { |
120 System.out.printf("test: %s", fname); |
123 System.out.printf("test: %s", fname); |
121 for (String onearg : args) { |
124 for (String onearg : args) { |
122 System.out.printf(" %s", onearg); |
125 System.out.printf(" %s", onearg); |
146 for (String onefield : fields) { |
149 for (String onefield : fields) { |
147 jcargs.add(onefield); |
150 jcargs.add(onefield); |
148 } |
151 } |
149 } |
152 } |
150 |
153 |
151 boolean creturn = compile("X.java", jcargs); |
154 boolean creturn = compile("Base.java", jcargs); |
152 if (!creturn) { |
155 if (!creturn) { |
153 // compilation errors note and return.. assume no class file |
156 // compilation errors note and return.. assume no class file |
154 System.err.println("check: Compilation Failed"); |
157 System.err.println("check: Compilation Failed"); |
155 System.err.println("\t classVersion:\t" + major); |
158 System.err.println("\t classVersion:\t" + major); |
156 System.err.println("\t arguments:\t" + jcargs); |
159 System.err.println("\t arguments:\t" + jcargs); |
157 failedCases++; |
160 failedCases++; |
158 |
161 |
159 } else if (!checkClassFileVersion("X.class", major)) { |
162 } else if (!checkClassFileVersion("Base.class", major)) { |
160 failedCases++; |
163 failedCases++; |
161 } |
164 } |
162 } |
165 } |
163 |
166 |
164 protected void checksrc16(String... args) { |
167 protected void checksrc16(String... args) { |
165 printargs("checksrc16", args); |
168 printargs("checksrc16", args); |
166 int asize = args.length; |
169 int asize = args.length; |
167 String[] newargs = new String[asize + 1]; |
170 String[] newargs = new String[asize + 1]; |
168 System.arraycopy(args, 0, newargs, 0, asize); |
171 System.arraycopy(args, 0, newargs, 0, asize); |
169 newargs[asize] = "X.java"; |
172 newargs[asize] = "Base.java"; |
170 pass(newargs); |
173 pass(newargs); |
171 newargs[asize] = "Y.java"; |
174 newargs[asize] = "New17.java"; |
172 fail(newargs); |
175 fail(newargs); |
173 } |
176 } |
174 |
177 |
175 protected void checksrc17(String... args) { |
178 protected void checksrc17(String... args) { |
176 printargs("checksrc17", args); |
179 printargs("checksrc17", args); |
177 int asize = args.length; |
180 int asize = args.length; |
178 String[] newargs = new String[asize+1]; |
181 String[] newargs = new String[asize+1]; |
179 System.arraycopy(args, 0, newargs,0 , asize); |
182 System.arraycopy(args, 0, newargs,0 , asize); |
180 newargs[asize] = "X.java"; |
183 newargs[asize] = "New17.java"; |
181 pass(newargs); |
184 pass(newargs); |
182 newargs[asize] = "Y.java"; |
185 newargs[asize] = "New18.java"; |
183 pass(newargs); |
186 fail(newargs); |
184 } |
187 } |
185 |
188 |
186 protected void checksrc18(String... args) { |
189 protected void checksrc18(String... args) { |
187 printargs("checksrc18", args); |
190 printargs("checksrc18", args); |
188 checksrc17(args); |
191 int asize = args.length; |
|
192 String[] newargs = new String[asize+1]; |
|
193 System.arraycopy(args, 0, newargs,0 , asize); |
|
194 newargs[asize] = "New17.java"; |
|
195 pass(newargs); |
|
196 newargs[asize] = "New18.java"; |
|
197 pass(newargs); |
189 } |
198 } |
190 |
199 |
191 protected void checksrc19(String... args) { |
200 protected void checksrc19(String... args) { |
192 printargs("checksrc19", args); |
201 printargs("checksrc19", args); |
193 checksrc17(args); |
202 checksrc18(args); |
194 } |
203 } |
195 |
204 |
196 protected void pass(String... args) { |
205 protected void pass(String... args) { |
197 printargs("pass", args); |
206 printargs("pass", args); |
198 |
207 |
286 System.err.println(e); |
295 System.err.println(e); |
287 return false; |
296 return false; |
288 } |
297 } |
289 } |
298 } |
290 |
299 |
|
300 protected void writeSourceFile(String fileName, String body) throws IOException{ |
|
301 try (Writer fw = new FileWriter(fileName)) { |
|
302 fw.write(body); |
|
303 } |
|
304 } |
291 |
305 |
292 protected void genSourceFiles() throws IOException{ |
306 protected void genSourceFiles() throws IOException{ |
293 /* Create a file that executes with all supported versions. */ |
307 /* Create a file that executes with all supported versions. */ |
294 File fsource = new File("X.java"); |
308 writeSourceFile("Base.java","public class Base { }\n"); |
295 try (Writer fw = new FileWriter(fsource)) { |
309 |
296 fw.write("public class X { }\n"); |
310 /* |
297 fw.flush(); |
311 * Create a file with a new feature in 1.7, not in 1.6 : "<>" |
298 } |
|
299 |
|
300 /* Create a file with feature not supported in deprecated version. |
|
301 * New feature for 1.7, does not exist in 1.6. |
|
302 */ |
312 */ |
303 fsource = new File("Y.java"); |
313 writeSourceFile("New17.java", |
304 try (Writer fw = new FileWriter(fsource)) { |
314 "import java.util.List;\n" + |
305 fw.write("import java.util.List;\n"); |
315 "import java.util.ArrayList;\n" + |
306 fw.write("import java.util.ArrayList;\n"); |
316 "class New17 { List<String> s = new ArrayList<>(); }\n" |
307 fw.write("class Z { List<String> s = new ArrayList<>(); }\n"); |
317 ); |
308 fw.flush(); |
318 |
309 } |
319 /* |
|
320 * Create a file with a new feature in 1.8, not in 1.7 : lambda |
|
321 */ |
|
322 writeSourceFile("New18.java", |
|
323 "public class New18 { \n" + |
|
324 " void m() { \n" + |
|
325 " new Thread(() -> { }); \n" + |
|
326 " } \n" + |
|
327 "} \n" |
|
328 ); |
|
329 |
310 } |
330 } |
311 |
331 |
312 protected boolean checkClassFileVersion |
332 protected boolean checkClassFileVersion |
313 (String filename,String classVersionNumber) { |
333 (String filename,String classVersionNumber) { |
314 ByteBuffer bb = ByteBuffer.allocate(1024); |
334 ByteBuffer bb = ByteBuffer.allocate(1024); |