Assign preprocessor directives to compilation + make compilation cached

This commit is contained in:
Tamas Vajk
2021-01-27 16:17:32 +01:00
parent 1ab4af275d
commit 967765342e
14 changed files with 236 additions and 181 deletions

View File

@@ -3,6 +3,7 @@
*/
import Element
private import semmle.code.csharp.commons.Compilation
/**
* A preprocessor directive, such as `PragmaWarningDirective`, `PragmaChecksumDirective`,
@@ -17,9 +18,10 @@ class PreprocessorDirective extends Element, @preprocessor_directive {
*/
predicate isActive() { preprocessor_directive_active(this, 1) }
override Location getALocation() {
preprocessor_directive_location(this, result) or preprocessor_directive_assembly(this, result)
}
override Location getALocation() { preprocessor_directive_location(this, result) }
/** Gets the compilation this directive belongs to, if any. */
Compilation getCompilation() { preprocessor_directive_compilation(this, result) }
}
/**

View File

@@ -424,9 +424,9 @@ preprocessor_directive_location(
unique int id: @preprocessor_directive ref,
int loc: @location ref);
preprocessor_directive_assembly(
preprocessor_directive_compilation(
unique int id: @preprocessor_directive ref,
int loc: @assembly ref);
int compilation: @compilation ref);
preprocessor_directive_active(
unique int id: @preprocessor_directive ref,