compileFixtures function
Compiles fixtures/java/<name>/src with javac --release 17 -g into a
fresh temporary directory and returns it.
Implementation
Directory compileFixtures({String name = 'basic'}) {
final src = p.join(findRepoRoot(), 'fixtures', 'java', name, 'src');
final files = [
for (final f in Directory(src).listSync(recursive: true))
if (f is File && f.path.endsWith('.java')) f.path,
]..sort();
final out = Directory.systemTemp.createTempSync('nab_fixtures_');
// Compile-time stubs (kotlin.coroutines.Continuation) live outside the
// fixture output so they never shadow the real classes at run time.
final stubs = compileKotlinStubs();
try {
final r = Process.runSync('javac', [
'--release',
'17',
'-g',
'-encoding',
'UTF-8',
'-cp',
stubs.path,
'-d',
out.path,
...files,
]);
if (r.exitCode != 0) {
throw StateError('javac failed:\n${r.stderr}');
}
} finally {
stubs.deleteSync(recursive: true);
}
return out;
}