|
81 | 81 | " loaded.\n" \
|
82 | 82 | " --context-include i only analyze code matching specification i that\n" /* NOLINT(*) */ \
|
83 | 83 | " --context-exclude e does not match specification e.\n" \
|
| 84 | + " All other methods are excluded, i.e. we load their\n" /* NOLINT(*) */ \ |
| 85 | + " signatures and meta-information, but not their\n" /* NOLINT(*) */ \ |
| 86 | + " bodies.\n" \ |
84 | 87 | " A specification is any prefix of a package, class\n" /* NOLINT(*) */ \
|
85 | 88 | " or method name, e.g. \"org.cprover.\" or\n" /* NOLINT(*) */ \
|
86 | 89 | " \"org.cprover.MyClass.\" or\n" \
|
@@ -296,7 +299,13 @@ class java_bytecode_languaget:public languaget
|
296 | 299 | /// IDs of such objects to symbols that store their values.
|
297 | 300 | std::unordered_map<std::string, object_creation_referencet> references;
|
298 | 301 |
|
299 |
| - /// If set, method bodies are only elaborated if they pass the filter |
| 302 | + /// If set, method bodies are only elaborated if they pass the filter. |
| 303 | + /// Methods that do not pass the filter are "excluded": their symbols will |
| 304 | + /// include all the meta-information that is available from the bytecode |
| 305 | + /// (parameter types, return type, accessibility etc.) but the value of the |
| 306 | + /// symbol (corresponding to the body of the method) will be replaced with the |
| 307 | + /// same kind of "return nondet null or instance of return type" body that we |
| 308 | + /// use for stubbed methods. The original method body will never be loaded. |
300 | 309 | optionalt<prefix_filtert> method_context;
|
301 | 310 | };
|
302 | 311 |
|
|
0 commit comments