A do-nothing work scheduler that responds immediately with MissingResponse.
A do-nothing work scheduler that responds immediately with MissingResponse.
Used during compiler shutdown.
Asks for a computation to be done quickly on the presentation compiler thread
Removes source files and toplevel symbols, and issues a new typer run.
Removes source files and toplevel symbols, and issues a new typer run.
Returns () to syncvar response
on completion.
Asks for a computation to be done on presentation compiler thread, returning a response with the result or an exception
Sets sync var response
to the position of the definition of the given link in
the given sourcefile.
Sets sync var response
to the position of the definition of the given link in
the given sourcefile.
The symbol referenced by the link (might come from a classfile)
A response that will be set to the following:
If source
contains a definition that is referenced by the given link
the position of that definition, otherwise NoPosition.
Note: This operation does not automatically load source
. If source
is unloaded, it stays that way.
Set sync var response
to the parse tree of source
with all top-level symbols entered.
Set sync var response
to the parse tree of source
with all top-level symbols entered.
The source file to be analyzed
If set to true
, source file will be kept as a loaded unit afterwards.
If keepLoaded is false
the operation is run at low priority, only after
everything is brought up to date in a regular type checker run.
The response.
Makes sure a set of compilation units is loaded and parsed.
Makes sure a set of compilation units is loaded and parsed.
Returns () to syncvar response
on completion.
Afterwards a new background compiler run is started with
the given sources at the head of the list of to-be-compiled sources.
Cancels current compiler run and start a fresh one where everything will be re-typechecked (but not re-loaded).
Tells the compile server to shutdown, and not to restart again
If source if not yet loaded, get an outline view with askParseEntered.
If source if not yet loaded, get an outline view with askParseEntered. If source is loaded, return it. In both cases, set response to parsed tree.
If set to true
, source file will be kept as a loaded unit afterwards.
Asks to do unit corresponding to given source file on present and subsequent type checking passes.
Asks to do unit corresponding to given source file on present and subsequent type checking passes. If the file is in the 'crashedFiles' ignore list it is removed and typechecked normally.
Sets sync var response
to the smallest fully attributed tree that encloses position pos
.
Sets sync var response
to the smallest fully attributed tree that encloses position pos
.
Note: Unlike for most other ask... operations, the source file belonging to pos
needs not be loaded.
Return the compilation unit attached to a source file, or None if source is not loaded.
Locate smallest tree that encloses position
Locate smallest tree that encloses position
Position must be loaded
Run operation op
on a compilation unit associated with given source
.
Run operation op
on a compilation unit associated with given source
.
If source has a loaded compilation unit, this one is passed to op
.
Otherwise a new compilation unit is created, but not added to the set of loaded units.
Returns parse tree for source source
.
Returns parse tree for source source
. No symbols are entered. Syntax errors are reported.
This method is thread-safe and as such can safely run outside of the presentation compiler thread.
Removes the CompilationUnit corresponding to the given SourceFile from consideration for recompilation.
The scheduler by which client and compiler communicate Must be initialized before starting compilerRunner
The scheduler by which client and compiler communicate Must be initialized before starting compilerRunner
Interface of interactive compiler to a client such as an IDE The model the presentation compiler consists of the following parts:
unitOfFile: The map from sourcefiles to loaded units. A sourcefile/unit is loaded if it occurs in that map.
manipulated by: removeUnitOf, reloadSources.
A call to reloadSources will add the given sources to the loaded units, and start a new background compiler pass to compile all loaded units (with the indicated sources first). The background compiler thread can be interrupted each time an AST node is completely resolved in the following ways:
Actions under 1-2 can themselves be interrupted. High-priority actions under 4 cannot; they always run to completion. So these high-priority actions should to be short.
Normally, an interrupted action continues after the interrupting action is finished. However, if the interrupting action created a new run, the interrupted action is aborted. If there's an outstanding response, it will be set to a Right value with a FreshRunReq exception.