@@ -60,12 +60,20 @@ class SourcePath(private val cp: CompilerClassPath) {
60
60
private fun doPrepareCompiledFile (): CompiledFile =
61
61
CompiledFile (content, compiledFile!! , compiledContext!! , compiledContainer!! , all(), cp)
62
62
}
63
+
64
+ private fun sourceFile (file : Path ): SourceFile {
65
+ if (file !in files) {
66
+ LOG .warn(" File {} is not on SourcePath, adding it now..." , file)
67
+ put(file, file.toFile().readText())
68
+ }
69
+ return files[file]!!
70
+ }
63
71
64
72
fun put (file : Path , content : String ) {
65
73
assert (! content.contains(' \r ' ))
66
74
67
- if (files.contains( file) )
68
- files[ file] !! .put(content)
75
+ if (file in files )
76
+ sourceFile( file) .put(content)
69
77
else
70
78
files[file] = SourceFile (file, content)
71
79
}
@@ -77,21 +85,21 @@ class SourcePath(private val cp: CompilerClassPath) {
77
85
/* *
78
86
* Get the latest content of a file
79
87
*/
80
- fun content (file : Path ): String = files[ file] !! .content
88
+ fun content (file : Path ): String = sourceFile( file) .content
81
89
82
- fun parsedFile (file : Path ): KtFile = files[ file] !! .parseIfChanged().parsed!!
90
+ fun parsedFile (file : Path ): KtFile = sourceFile( file) .parseIfChanged().parsed!!
83
91
84
92
/* *
85
93
* Compile the latest version of a file
86
94
*/
87
95
fun currentVersion (file : Path ): CompiledFile =
88
- files[ file] !! .compileIfChanged().prepareCompiledFile()
96
+ sourceFile( file) .compileIfChanged().prepareCompiledFile()
89
97
90
98
/* *
91
99
* Return whatever is the most-recent already-compiled version of `file`
92
100
*/
93
101
fun latestCompiledVersion (file : Path ): CompiledFile =
94
- files[ file] !! .prepareCompiledFile()
102
+ sourceFile( file) .prepareCompiledFile()
95
103
96
104
/* *
97
105
* Compile changed files
0 commit comments