Rust: Macro call resolution

This commit is contained in:
Tom Hvitved
2025-09-29 15:02:45 +02:00
parent f4388c80d0
commit 701cff3ca4
24 changed files with 380 additions and 273 deletions

View File

@@ -1,2 +1,2 @@
| exe/src/main.rs:5:1:7:1 | fn main |
| lib/src/a_module/mod.rs:1:1:3:1 | fn hello |
| lib/src/a_module/mod.rs:1:1:4:1 | fn hello |

View File

@@ -1,3 +1,4 @@
pub fn hello() {
println!("Hello, world!");
my_macro!(); // $ item=my_macro
println!("Hello, world!"); // $ item=println
} // HELLO

View File

@@ -1 +1,10 @@
#[macro_use]
mod macros {
macro_rules! my_macro {
() => {
println!("my_macro!");
};
}
}
pub mod a_module;

View File

@@ -9,8 +9,8 @@
| Inconsistencies - Path resolution | 0 |
| Inconsistencies - SSA | 0 |
| Inconsistencies - data flow | 0 |
| Lines of code extracted | 9 |
| Lines of user code extracted | 9 |
| Macro calls - resolved | 2 |
| Macro calls - total | 2 |
| Lines of code extracted | 15 |
| Lines of user code extracted | 15 |
| Macro calls - resolved | 5 |
| Macro calls - total | 5 |
| Macro calls - unresolved | 0 |

View File

@@ -9,8 +9,8 @@
| Inconsistencies - Path resolution | 0 |
| Inconsistencies - SSA | 0 |
| Inconsistencies - data flow | 0 |
| Lines of code extracted | 9 |
| Lines of user code extracted | 9 |
| Macro calls - resolved | 2 |
| Macro calls - total | 2 |
| Lines of code extracted | 15 |
| Lines of user code extracted | 15 |
| Macro calls - resolved | 5 |
| Macro calls - total | 5 |
| Macro calls - unresolved | 0 |

View File

@@ -12,6 +12,7 @@ private import codeql.rust.elements.internal.generated.MacroCall
*/
module Impl {
private import rust
private import codeql.rust.internal.PathResolution
pragma[nomagic]
predicate isInMacroExpansion(AstNode root, AstNode n) {
@@ -44,5 +45,12 @@ module Impl {
isInMacroExpansion(this, result) and
this.getTokenTree().getLocation().contains(result.getLocation())
}
/**
* Gets the macro definition that this macro call resolves to.
*
* The result is either a `MacroDef` or a `MacroRules`.
*/
Item resolveMacro() { result = resolvePath(this.getPath()) }
}
}

View File

@@ -11,13 +11,14 @@ private import codeql.util.Option
private newtype TNamespace =
TTypeNamespace() or
TValueNamespace()
TValueNamespace() or
TMacroNamespace()
/**
* A namespace.
*
* Either the _value_ namespace or the _type_ namespace, see
* https://doc.rust-lang.org/reference/names/namespaces.html.
* Either the _value_ namespace, the _type_ namespace, or the _macro_ namespace,
* see https://doc.rust-lang.org/reference/names/namespaces.html.
*/
final class Namespace extends TNamespace {
/** Holds if this is the value namespace. */
@@ -26,11 +27,16 @@ final class Namespace extends TNamespace {
/** Holds if this is the type namespace. */
predicate isType() { this = TTypeNamespace() }
/** Holds if this is the macro namespace. */
predicate isMacro() { this = TMacroNamespace() }
/** Gets a textual representation of this namespace. */
string toString() {
this.isValue() and result = "value"
or
this.isType() and result = "type"
or
this.isMacro() and result = "macro"
}
}
@@ -194,6 +200,16 @@ abstract class ItemNode extends Locatable {
/** Gets the visibility of this item, if any. */
abstract Visibility getVisibility();
abstract Attr getAnAttr();
pragma[nomagic]
final Attr getAttr(string name) {
result = this.getAnAttr() and
result.getMeta().getPath().(RelevantPath).isUnqualified(name)
}
final predicate hasAttr(string name) { exists(this.getAttr(name)) }
/**
* Holds if this item is public.
*
@@ -206,6 +222,8 @@ abstract class ItemNode extends Locatable {
not this instanceof Use
or
this instanceof Variant
or
this instanceof MacroItemNode
}
/** Gets the `i`th type parameter of this item, if any. */
@@ -266,6 +284,12 @@ abstract class ItemNode extends Locatable {
kind.isInternal() and
useOpt.isNone()
or
macroExportEdge(this, name, result) and
kind.isBoth() and
useOpt.isNone()
or
macroUseEdge(this, name, kind, useOpt, result)
or
// items made available through `use` are available to nodes that contain the `use`
useOpt.asSome() =
any(UseItemNode use_ |
@@ -365,11 +389,6 @@ abstract class ItemNode extends Locatable {
or
name = "crate" and
this = result.(CrateItemNode).getASourceFile()
or
// todo: implement properly
name = "$crate" and
result = any(CrateItemNode crate | this = crate.getASourceFile()).(Crate).getADependency*() and
result.(CrateItemNode).isPotentialDollarCrateTarget()
)
}
@@ -442,7 +461,7 @@ abstract private class ModuleLikeNode extends ItemNode {
}
}
private class SourceFileItemNode extends ModuleLikeNode, SourceFile {
private class SourceFileItemNode extends ModuleLikeNode instanceof SourceFile {
pragma[nomagic]
ModuleLikeNode getSuper() { fileImport(result.getAnItemInScope(), this) }
@@ -454,6 +473,8 @@ private class SourceFileItemNode extends ModuleLikeNode, SourceFile {
override Visibility getVisibility() { none() }
override Attr getAnAttr() { result = SourceFile.super.getAnAttr() }
override TypeParam getTypeParam(int i) { none() }
override predicate hasCanonicalPath(Crate c) { none() }
@@ -487,14 +508,6 @@ class CrateItemNode extends ItemNode instanceof Crate {
)
}
pragma[nomagic]
predicate isPotentialDollarCrateTarget() {
exists(string name, RelevantPath p |
p.isDollarCrateQualifiedPath(name) and
exists(this.getASuccessor(name))
)
}
override string getName() { result = Crate.super.getName() }
override Namespace getNamespace() {
@@ -503,6 +516,8 @@ class CrateItemNode extends ItemNode instanceof Crate {
override Visibility getVisibility() { none() }
override Attr getAnAttr() { none() }
override TypeParam getTypeParam(int i) { none() }
override predicate hasCanonicalPath(Crate c) { c = this }
@@ -524,12 +539,19 @@ class CrateItemNode extends ItemNode instanceof Crate {
}
class ExternCrateItemNode extends ItemNode instanceof ExternCrate {
override string getName() { result = super.getRename().getName().getText() }
override string getName() {
result = super.getRename().getName().getText()
or
not super.hasRename() and
result = super.getIdentifier().getText()
}
override Namespace getNamespace() { none() }
override Visibility getVisibility() { none() }
override Attr getAnAttr() { result = ExternCrate.super.getAnAttr() }
override TypeParam getTypeParam(int i) { none() }
override predicate hasCanonicalPath(Crate c) { none() }
@@ -572,6 +594,8 @@ private class ConstItemNode extends AssocItemNode instanceof Const {
override Visibility getVisibility() { result = Const.super.getVisibility() }
override Attr getAnAttr() { result = Const.super.getAnAttr() }
override TypeParam getTypeParam(int i) { none() }
}
@@ -582,6 +606,8 @@ private class EnumItemNode extends TypeItemNode instanceof Enum {
override Visibility getVisibility() { result = Enum.super.getVisibility() }
override Attr getAnAttr() { result = Enum.super.getAnAttr() }
override TypeParam getTypeParam(int i) { result = super.getGenericParamList().getTypeParam(i) }
override predicate hasCanonicalPath(Crate c) { this.hasCanonicalPathPrefix(c) }
@@ -624,6 +650,8 @@ private class VariantItemNode extends ParameterizableItemNode instanceof Variant
override Visibility getVisibility() { result = super.getEnum().getVisibility() }
override Attr getAnAttr() { result = Variant.super.getAnAttr() }
override int getArity() { result = super.getFieldList().(TupleFieldList).getNumberOfFields() }
override predicate hasCanonicalPath(Crate c) { this.hasCanonicalPathPrefix(c) }
@@ -652,12 +680,19 @@ class FunctionItemNode extends AssocItemNode, ParameterizableItemNode instanceof
override predicate hasImplementation() { Function.super.hasImplementation() }
override Namespace getNamespace() { result.isValue() }
override Namespace getNamespace() {
// see https://doc.rust-lang.org/reference/procedural-macros.html
if this.hasAttr(["proc_macro", "proc_macro_attribute", "proc_macro_derive"])
then result.isMacro()
else result.isValue()
}
override TypeParam getTypeParam(int i) { result = super.getGenericParamList().getTypeParam(i) }
override Visibility getVisibility() { result = Function.super.getVisibility() }
override Attr getAnAttr() { result = Function.super.getAnAttr() }
override int getArity() { result = super.getNumberOfParamsInclSelf() }
}
@@ -720,6 +755,8 @@ final class ImplItemNode extends ImplOrTraitItemNode instanceof Impl {
override Visibility getVisibility() { result = Impl.super.getVisibility() }
override Attr getAnAttr() { result = Impl.super.getAnAttr() }
TypeParamItemNode getBlanketImplementationTypeParam() { result = this.resolveSelfTy() }
/**
@@ -818,6 +855,8 @@ final private class ImplTraitTypeReprItemNode extends TypeItemNode instanceof Im
override Visibility getVisibility() { none() }
override Attr getAnAttr() { none() }
override TypeParam getTypeParam(int i) { none() }
override predicate hasCanonicalPath(Crate c) { none() }
@@ -837,6 +876,8 @@ private class ModuleItemNode extends ModuleLikeNode instanceof Module {
override Visibility getVisibility() { result = Module.super.getVisibility() }
override Attr getAnAttr() { result = Module.super.getAnAttr() }
override TypeParam getTypeParam(int i) { none() }
override predicate hasCanonicalPath(Crate c) { this.hasCanonicalPathPrefix(c) }
@@ -890,6 +931,8 @@ private class StructItemNode extends TypeItemNode, ParameterizableItemNode insta
override Visibility getVisibility() { result = Struct.super.getVisibility() }
override Attr getAnAttr() { result = Struct.super.getAnAttr() }
override int getArity() { result = super.getFieldList().(TupleFieldList).getNumberOfFields() }
override TypeParam getTypeParam(int i) { result = super.getGenericParamList().getTypeParam(i) }
@@ -930,6 +973,8 @@ final class TraitItemNode extends ImplOrTraitItemNode, TypeItemNode instanceof T
override Visibility getVisibility() { result = Trait.super.getVisibility() }
override Attr getAnAttr() { result = Trait.super.getAnAttr() }
override TypeParam getTypeParam(int i) { result = super.getGenericParamList().getTypeParam(i) }
override predicate hasCanonicalPath(Crate c) { this.hasCanonicalPathPrefix(c) }
@@ -987,6 +1032,8 @@ final class TypeAliasItemNode extends TypeItemNode, AssocItemNode instanceof Typ
override Visibility getVisibility() { result = TypeAlias.super.getVisibility() }
override Attr getAnAttr() { result = TypeAlias.super.getAnAttr() }
override TypeParam getTypeParam(int i) { result = super.getGenericParamList().getTypeParam(i) }
override predicate hasCanonicalPath(Crate c) { none() }
@@ -1008,6 +1055,8 @@ private class UnionItemNode extends TypeItemNode instanceof Union {
override Visibility getVisibility() { result = Union.super.getVisibility() }
override Attr getAnAttr() { result = Union.super.getAnAttr() }
override TypeParam getTypeParam(int i) { result = super.getGenericParamList().getTypeParam(i) }
override predicate hasCanonicalPath(Crate c) { this.hasCanonicalPathPrefix(c) }
@@ -1038,6 +1087,8 @@ private class UseItemNode extends ItemNode instanceof Use {
override Visibility getVisibility() { result = Use.super.getVisibility() }
override Attr getAnAttr() { result = Use.super.getAnAttr() }
override TypeParam getTypeParam(int i) { none() }
override predicate hasCanonicalPath(Crate c) { none() }
@@ -1052,6 +1103,8 @@ private class BlockExprItemNode extends ItemNode instanceof BlockExpr {
override Visibility getVisibility() { none() }
override Attr getAnAttr() { result = BlockExpr.super.getAnAttr() }
override TypeParam getTypeParam(int i) { none() }
override predicate hasCanonicalPath(Crate c) { none() }
@@ -1134,6 +1187,8 @@ final class TypeParamItemNode extends TypeItemNode instanceof TypeParam {
override Visibility getVisibility() { none() }
override Attr getAnAttr() { result = TypeParam.super.getAnAttr() }
override TypeParam getTypeParam(int i) { none() }
override Location getLocation() { result = TypeParam.super.getName().getLocation() }
@@ -1176,6 +1231,48 @@ final private class TypeParamItemNodeImpl extends TypeParamItemNode instanceof T
ItemNode resolveABoundCand() { result = resolvePathCand(this.getABoundPathCand()) }
}
abstract private class MacroItemNode extends ItemNode {
override Namespace getNamespace() { result.isMacro() }
override TypeParam getTypeParam(int i) { none() }
override predicate hasCanonicalPath(Crate c) { this.hasCanonicalPathPrefix(c) }
bindingset[c]
private string getCanonicalPathPart(Crate c, int i) {
i = 0 and
result = this.getCanonicalPathPrefix(c)
or
i = 1 and
result = "::"
or
i = 2 and
result = this.getName()
}
language[monotonicAggregates]
override string getCanonicalPath(Crate c) {
this.hasCanonicalPath(c) and
result = strictconcat(int i | i in [0 .. 2] | this.getCanonicalPathPart(c, i) order by i)
}
}
private class MacroRulesItemNode extends MacroItemNode instanceof MacroRules {
override string getName() { result = MacroRules.super.getName().getText() }
override Visibility getVisibility() { result = MacroRules.super.getVisibility() }
override Attr getAnAttr() { result = MacroRules.super.getAnAttr() }
}
private class MacroDefItemNode extends MacroItemNode instanceof MacroDef {
override string getName() { result = MacroDef.super.getName().getText() }
override Visibility getVisibility() { result = MacroDef.super.getVisibility() }
override Attr getAnAttr() { result = MacroDef.super.getAnAttr() }
}
/** Holds if `item` has the name `name` and is a top-level item inside `f`. */
private predicate sourceFileEdge(SourceFile f, string name, ItemNode item) {
item = f.(ItemNode).getADescendant() and
@@ -1428,15 +1525,12 @@ class RelevantPath extends Path {
pragma[nomagic]
predicate isCratePath(string name, ItemNode encl) {
name = ["crate", "$crate"] and
name = "crate" and
this.isUnqualified(name, encl)
}
pragma[nomagic]
predicate isDollarCrateQualifiedPath(string name) {
this.getQualifier().(RelevantPath).isCratePath("$crate", _) and
this.getText() = name
}
predicate isDollarCrate() { this.isUnqualified("$crate", _) }
}
private predicate isModule(ItemNode m) { m instanceof Module }
@@ -1462,10 +1556,16 @@ private ItemNode getOuterScope(ItemNode i) {
pragma[nomagic]
private predicate unqualifiedPathLookup(ItemNode ancestor, string name, Namespace ns, ItemNode encl) {
// lookup in the immediately enclosing item
any(RelevantPath p).isUnqualified(name, encl) and
ancestor = encl and
exists(ns) and
not name = ["crate", "$crate", "super", "self"]
exists(RelevantPath path |
path.isUnqualified(name, encl) and
ancestor = encl and
exists(ns) and
not name = ["crate", "$crate", "super", "self"]
|
pathUsesNamespace(path, ns)
or
not pathUsesNamespace(path, _)
)
or
// lookup in an outer scope, but only if the item is not declared in inner scope
exists(ItemNode mid |
@@ -1474,8 +1574,12 @@ private predicate unqualifiedPathLookup(ItemNode ancestor, string name, Namespac
not (
name = "Self" and
mid = any(ImplOrTraitItemNode i).getAnItemInSelfScope()
) and
)
|
ancestor = getOuterScope(mid)
or
ns.isMacro() and
ancestor = mid.getImmediateParentModule()
)
}
@@ -1502,7 +1606,7 @@ private predicate sourceFileHasCratePathTc(ItemNode i1, ItemNode i2) =
*/
pragma[nomagic]
private predicate keywordLookup(ItemNode ancestor, string name, RelevantPath p) {
// For `($)crate`, jump directly to the root module
// For `crate`, jump directly to the root module
exists(ItemNode i | p.isCratePath(name, i) |
ancestor instanceof SourceFile and
ancestor = i
@@ -1563,6 +1667,41 @@ module TraitIsVisible<relevantTraitVisibleSig/2 relevantTraitVisible> {
}
}
pragma[nomagic]
private predicate isMacroExpansion(AstNode expansion, Path macroDefPath) {
exists(MacroCall mc |
expansion = mc.getMacroCallExpansion() and
macroDefPath = mc.getPath()
)
or
exists(ItemNode adt |
expansion = adt.(Adt).getDeriveMacroExpansion(_) and
macroDefPath = adt.getAttr("derive").getMeta().getPath()
)
}
pragma[nomagic]
predicate isInMacroExpansion(Path macroDefPath, AstNode n) {
isMacroExpansion(n, macroDefPath)
or
isInMacroExpansion(macroDefPath, n.getParentNode())
}
/**
* Holds if `n` is inside a macro expansion, and the macro _may_ originate from
* crate `crate`.
*
* The reason why we cannot be sure is that we need to consider all ancestor macro
* calls.
*/
pragma[nomagic]
predicate isInMacroFromCrateExpansion(CrateItemNode crate, AstNode n) {
exists(Path macroDefPath |
isInMacroExpansion(macroDefPath, n) and
crate.getASourceFile().getFile() = resolvePathCand(macroDefPath).getFile()
)
}
pragma[nomagic]
private ItemNode resolvePathCand0(RelevantPath path, Namespace ns) {
exists(ItemNode res |
@@ -1575,6 +1714,10 @@ private ItemNode resolvePathCand0(RelevantPath path, Namespace ns) {
else result = res
)
or
path.isDollarCrate() and
isInMacroFromCrateExpansion(result, path) and
ns = result.getNamespace()
or
result = resolvePathCandQualified(_, _, path, ns)
or
result = resolveUseTreeListItem(_, _, path, _) and
@@ -1647,8 +1790,6 @@ private predicate pathUsesNamespace(Path p, Namespace n) {
p = any(PathExpr pe).getPath()
or
p = any(TupleStructPat tsp).getPath()
or
p = any(Meta m).getPath()
)
or
n.isType() and
@@ -1670,6 +1811,47 @@ private predicate pathUsesNamespace(Path p, Namespace n) {
or
p = any(Path parent).getQualifier()
)
or
n.isMacro() and
(
p = any(MacroCall mc).getPath()
or
p = any(Meta m).getPath()
)
}
/**
* Holds if crate `crate` exports the macro `macro` named `name` using
* a `#[macro_export]` attribute.
*
* See https://lukaswirth.dev/tlborm/decl-macros/minutiae/import-export.html.
*/
pragma[nomagic]
private predicate macroExportEdge(CrateItemNode crate, string name, MacroItemNode macro) {
crate.getASourceFile().getFile() = macro.getFile() and
macro.hasAttr("macro_export") and
name = macro.getName()
}
/**
* Holds if item `i` contains a `mod` or `extern crate` definition that
* makes the macro `macro` named `name` available using a `#[macro_use]`
* attribute.
*
* See https://lukaswirth.dev/tlborm/decl-macros/minutiae/import-export.html.
*/
pragma[nomagic]
private predicate macroUseEdge(
ItemNode i, string name, SuccessorKind kind, UseOption useOpt, MacroItemNode macro
) {
exists(ItemNode m |
m = i.getASuccessor(_, _, useOpt) and
m.hasAttr("macro_use")
|
macro = m.(ModuleItemNode).getASuccessor(name, kind, _)
or
macro = m.(ExternCrateItemNode).getASuccessor(_, _, _).getASuccessor(name, kind, _)
)
}
/**
@@ -1700,8 +1882,7 @@ private ItemNode resolvePathCand(RelevantPath path) {
|
pathUsesNamespace(path, ns)
or
not pathUsesNamespace(path, _) and
not path = any(MacroCall mc).getPath()
not pathUsesNamespace(path, _)
) and
(
not path = CallExprImpl::getFunctionPath(_)
@@ -1869,13 +2050,18 @@ private predicate typeImplEdge(
pragma[nomagic]
private predicate preludeItem(string name, ItemNode i) {
exists(Crate stdOrCore, ModuleLikeNode mod, ModuleItemNode prelude, ModuleItemNode rust |
stdOrCore.getName() = ["std", "core"] and
mod = stdOrCore.getSourceFile() and
prelude = mod.getASuccessor("prelude") and
rust = prelude.getASuccessor(["rust_2015", "rust_2018", "rust_2021", "rust_2024"]) and
i = rust.getASuccessor(name) and
not name = ["super", "self"]
exists(Crate stdOrCore | stdOrCore.getName() = ["std", "core"] |
exists(ModuleLikeNode mod, ModuleItemNode prelude, ModuleItemNode rust |
mod = stdOrCore.getSourceFile() and
prelude = mod.getASuccessor("prelude") and
rust = prelude.getASuccessor(["rust_2015", "rust_2018", "rust_2021", "rust_2024"]) and
i = rust.getASuccessor(name) and
not name = ["super", "self"]
)
or
macroExportEdge(stdOrCore, name, i)
or
macroUseEdge(stdOrCore, name, _, _, i)
)
}
@@ -1918,7 +2104,7 @@ private module Debug {
) {
p = getRelevantLocatable() and
exists(ItemNode encl |
unqualifiedPathLookup(encl, name, ns, ancestor) and
unqualifiedPathLookup(ancestor, name, ns, encl) and
p.isUnqualified(name, encl)
) and
path = p.toStringDebug()

View File

@@ -9,8 +9,8 @@ private import PathResolution
query predicate multiplePathResolutions(Path p, ItemNode i) {
p.fromSource() and
i = resolvePath(p) and
// known limitation for `$crate`
not p.getQualifier*().(RelevantPath).isUnqualified("$crate") and
// `panic` is defined in both `std` and `core`; both are included in the prelude
not p.getText() = "panic" and
// `use foo::bar` may use both a type `bar` and a value `bar`
not p =
any(UseTree use |

View File

@@ -19,7 +19,8 @@ private module ResolveTest implements TestSig {
exists(Comment c |
c.getLocation().hasLocationInfo(filepath, line, _, _, _) and
c.getCommentText().trim() = text and
c.fromSource()
c.fromSource() and
not text.matches("$%")
)
}

View File

@@ -1,8 +1,2 @@
multipleCallTargets
| proc_macro.rs:15:5:15:10 | ...::new(...) |
| proc_macro.rs:25:5:25:10 | ...::new(...) |
| proc_macro.rs:41:5:41:10 | ...::new(...) |
| proc_macro.rs:41:5:41:10 | ...::new(...) |
| proc_macro.rs:41:5:41:10 | ...::new(...) |
| proc_macro.rs:41:5:41:10 | ...::new(...) |
| proc_macro.rs:44:27:44:30 | ...::to_tokens(...) |

View File

@@ -1,80 +1,11 @@
multipleCallTargets
| test.rs:98:14:98:43 | ...::_print(...) |
| test.rs:110:14:110:33 | ...::_print(...) |
| test.rs:113:62:113:77 | ...::from(...) |
| test.rs:120:58:120:73 | ...::from(...) |
| test.rs:136:22:136:43 | ...::_print(...) |
| test.rs:141:22:141:43 | ...::_print(...) |
| test.rs:145:22:145:44 | ...::_print(...) |
| test.rs:161:26:161:110 | ...::_print(...) |
| test.rs:169:26:169:111 | ...::_print(...) |
| test.rs:179:30:179:68 | ...::_print(...) |
| test.rs:188:26:188:105 | ...::_print(...) |
| test.rs:229:22:229:72 | ... .read_to_string(...) |
| test.rs:664:22:664:43 | file.read(...) |
| test.rs:673:22:673:41 | f1.read(...) |
| test.rs:697:18:697:38 | ...::_print(...) |
| test.rs:702:18:702:45 | ...::_print(...) |
| test.rs:720:38:720:42 | ...::_print(...) |
| test.rs:724:38:724:54 | ...::_print(...) |
| test.rs:729:38:729:51 | ...::_print(...) |
| test.rs:739:34:739:52 | ...::_print(...) |
| test.rs:758:14:758:43 | ...::_print(...) |
| test.rs:773:18:773:42 | ...::_print(...) |
| test.rs:777:18:777:42 | ...::_print(...) |
| test.rs:782:18:782:45 | ...::_print(...) |
| test.rs:789:30:789:34 | ...::_print(...) |
| test.rs:793:30:793:52 | ...::_print(...) |
| test.rs:802:30:802:43 | ...::_print(...) |
| test.rs:812:30:812:34 | ...::_print(...) |
| test.rs:816:30:816:52 | ...::_print(...) |
| test.rs:825:30:825:43 | ...::_print(...) |
| test.rs:840:14:840:43 | ...::_print(...) |
| test.rs:854:14:854:34 | ...::_print(...) |
| test.rs:894:50:894:66 | ...::from(...) |
| test.rs:894:50:894:66 | ...::from(...) |
| test.rs:896:14:896:31 | ...::_print(...) |
| test.rs:899:14:899:31 | ...::_print(...) |
| test.rs:902:14:902:31 | ...::_print(...) |
| test.rs:905:14:905:30 | ...::_print(...) |
| test.rs:907:27:907:36 | ...::_print(...) |
| test.rs:908:28:908:41 | ...::_print(...) |
| test.rs:911:14:911:33 | ...::_print(...) |
| test.rs:913:27:913:36 | ...::_print(...) |
| test.rs:914:28:914:41 | ...::_print(...) |
| test.rs:917:14:917:31 | ...::_print(...) |
| test.rs:919:27:919:36 | ...::_print(...) |
| test.rs:920:28:920:41 | ...::_print(...) |
| test.rs:923:14:923:34 | ...::_print(...) |
| test.rs:925:27:925:36 | ...::_print(...) |
| test.rs:926:28:926:41 | ...::_print(...) |
| test.rs:929:14:929:25 | ...::_print(...) |
| test.rs:931:27:931:36 | ...::_print(...) |
| test.rs:932:28:932:41 | ...::_print(...) |
| test.rs:935:14:935:31 | ...::_print(...) |
| test.rs:937:27:937:36 | ...::_print(...) |
| test.rs:938:28:938:41 | ...::_print(...) |
| test.rs:941:14:941:30 | ...::_print(...) |
| test.rs:943:27:943:36 | ...::_print(...) |
| test.rs:944:28:944:41 | ...::_print(...) |
| test.rs:947:14:947:33 | ...::_print(...) |
| test.rs:949:27:949:36 | ...::_print(...) |
| test.rs:950:28:950:41 | ...::_print(...) |
| test.rs:953:14:953:37 | ...::_print(...) |
| test.rs:955:27:955:36 | ...::_print(...) |
| test.rs:956:28:956:41 | ...::_print(...) |
| test.rs:959:14:959:36 | ...::_print(...) |
| test.rs:961:27:961:36 | ...::_print(...) |
| test.rs:962:28:962:41 | ...::_print(...) |
| test.rs:965:14:965:38 | ...::_print(...) |
| test.rs:967:27:967:36 | ...::_print(...) |
| test.rs:968:28:968:41 | ...::_print(...) |
| test.rs:971:14:971:45 | ...::_print(...) |
| test.rs:973:27:973:36 | ...::_print(...) |
| test.rs:974:28:974:41 | ...::_print(...) |
| test.rs:977:14:977:29 | ...::_print(...) |
| test.rs:979:27:979:36 | ...::_print(...) |
| test.rs:980:28:980:41 | ...::_print(...) |
| test_futures_io.rs:45:27:45:84 | ...::read(...) |
| test_futures_io.rs:49:27:49:51 | reader.read(...) |
| test_futures_io.rs:83:22:83:39 | reader2.fill_buf() |

View File

@@ -8,24 +8,31 @@
| main.rs:19:23:19:23 | T | main.rs:18:10:18:10 | T | path |
| main.rs:19:29:19:32 | Self | main.rs:16:5:16:24 | struct S2 | path |
| main.rs:20:16:20:16 | x | main.rs:19:20:19:20 | x | local variable |
| main.rs:29:5:29:11 | println | {EXTERNAL LOCATION} | MacroRules | path |
| main.rs:29:22:29:26 | value | main.rs:29:50:29:54 | value | format argument |
| main.rs:29:29:29:33 | width | main.rs:26:9:26:13 | width | local variable |
| main.rs:29:36:29:44 | precision | main.rs:27:9:27:17 | precision | local variable |
| main.rs:30:5:30:11 | println | {EXTERNAL LOCATION} | MacroRules | path |
| main.rs:30:22:30:22 | 0 | main.rs:30:34:30:38 | value | format argument |
| main.rs:30:25:30:25 | 1 | main.rs:30:41:30:45 | width | format argument |
| main.rs:30:28:30:28 | 2 | main.rs:30:48:30:56 | precision | format argument |
| main.rs:30:34:30:38 | value | main.rs:28:9:28:13 | value | local variable |
| main.rs:30:41:30:45 | width | main.rs:26:9:26:13 | width | local variable |
| main.rs:30:48:30:56 | precision | main.rs:27:9:27:17 | precision | local variable |
| main.rs:31:5:31:11 | println | {EXTERNAL LOCATION} | MacroRules | path |
| main.rs:31:21:31:22 | {} | main.rs:31:29:31:33 | value | format argument |
| main.rs:31:24:31:25 | {} | main.rs:31:36:31:40 | width | format argument |
| main.rs:31:29:31:33 | value | main.rs:28:9:28:13 | value | local variable |
| main.rs:31:36:31:40 | width | main.rs:26:9:26:13 | width | local variable |
| main.rs:33:5:33:11 | println | {EXTERNAL LOCATION} | MacroRules | path |
| main.rs:33:22:33:27 | people | main.rs:32:9:32:14 | people | local variable |
| main.rs:34:5:34:11 | println | {EXTERNAL LOCATION} | MacroRules | path |
| main.rs:34:16:34:16 | 1 | main.rs:34:34:34:34 | 2 | format argument |
| main.rs:34:19:34:20 | {} | main.rs:34:31:34:31 | 1 | format argument |
| main.rs:34:23:34:23 | 0 | main.rs:34:31:34:31 | 1 | format argument |
| main.rs:34:26:34:27 | {} | main.rs:34:34:34:34 | 2 | format argument |
| main.rs:35:5:35:13 | assert_eq | {EXTERNAL LOCATION} | MacroRules | path |
| main.rs:35:16:35:21 | format | {EXTERNAL LOCATION} | MacroRules | path |
| main.rs:35:31:35:35 | {:<5} | main.rs:35:40:35:42 | "x" | format argument |
| main.rs:36:13:36:13 | S | main.rs:1:1:1:9 | struct S | path |
| main.rs:37:13:37:14 | M1 | main.rs:5:1:23:1 | mod M1 | path |

View File

@@ -0,0 +1,2 @@
query: Definitions.ql
postprocess: utils/test/ExternalLocationPostProcessing.ql

View File

@@ -1,3 +1,2 @@
multipleCallTargets
| main.rs:124:9:124:11 | f(...) |
| proc_macro.rs:9:5:9:10 | ...::new(...) |

View File

@@ -18,16 +18,16 @@ use my2::nested8_f; // $ item=I119
mod m1 {
fn f() {
println!("main.rs::m1::f");
println!("main.rs::m1::f"); // $ item=println
} // I16
pub mod m2 {
fn f() {
println!("main.rs::m1::m2::f");
println!("main.rs::m1::m2::f"); // $ item=println
} // I18
pub fn g() {
println!("main.rs::m1::m2::g");
println!("main.rs::m1::m2::g"); // $ item=println
f(); // $ item=I18
super::f(); // $ item=I16
} // I19
@@ -35,7 +35,7 @@ mod m1 {
pub mod m3 {
use super::f; // $ item=I18
pub fn h() {
println!("main.rs::m1::m2::m3::h");
println!("main.rs::m1::m2::m3::h"); // $ item=println
f(); // $ item=I18
} // I21
} // I20
@@ -46,7 +46,7 @@ mod m4 {
use super::m1::m2::g; // $ item=I19
pub fn i() {
println!("main.rs::m4::i");
println!("main.rs::m4::i"); // $ item=println
g(); // $ item=I19
} // I23
} // I22
@@ -54,7 +54,7 @@ mod m4 {
struct Foo {} // I24
fn h() {
println!("main.rs::h");
println!("main.rs::h"); // $ item=println
struct Foo {} // I26
@@ -63,7 +63,7 @@ fn h() {
g(); // $ item=I19
struct Foo {} // I28
println!("main.rs::h::f");
println!("main.rs::h::f"); // $ item=println
let _ = Foo {}; // $ item=I28
} // I27
@@ -75,7 +75,7 @@ fn h() {
} // I25
fn i() {
println!("main.rs::i");
println!("main.rs::i"); // $ item=println
let _ = Foo {}; // $ item=I24
@@ -101,25 +101,25 @@ macro_rules! fn_in_macro {
}
fn j() {
println!("main.rs::j");
fn_in_macro!(println!("main.rs::j::f"));
println!("main.rs::j"); // $ item=println
fn_in_macro!(println!("main.rs::j::f")); // $ item=fn_in_macro item=println
f_defined_in_macro(); // $ item=f_defined_in_macro
} // I31
mod m5 {
pub fn f() {
println!("main.rs::m5::f");
println!("main.rs::m5::f"); // $ item=println
} // I33
} // I32
mod m6 {
fn f() {
println!("main.rs::m6::f");
println!("main.rs::m6::f"); // $ item=println
} // I35
pub fn g() {
println!("main.rs::m6::g");
// this import shadows the definition `I35`, which we don't currently handle
println!("main.rs::m6::g"); // $ item=println
// this import shadows the definition `I35`, which we don't currently handle
use super::m5::*; // $ item=I32
f(); // $ item=I33 $ SPURIOUS: item=I35
} // I36
@@ -139,7 +139,7 @@ mod m7 {
#[rustfmt::skip]
pub fn f() -> MyEnum // $ item=I41
{
println!("main.rs::m7::f");
println!("main.rs::m7::f"); // $ item=println
let _ = MyEnum::A(0); // $ item=I42
let _ = MyEnum::B { x: 0 }; // $ item=I43
MyEnum::C // $ item=I44
@@ -151,7 +151,7 @@ mod m8 {
fn f(&self); // I48
fn g(&self) {
println!("main.rs::m8::MyTrait::g");
println!("main.rs::m8::MyTrait::g"); // $ item=println
f(); // $ item=I51
Self::f(self); // $ item=I48
} // I49
@@ -160,26 +160,26 @@ mod m8 {
struct MyStruct {} // I50
fn f() {
println!("main.rs::m8::f");
println!("main.rs::m8::f"); // $ item=println
} // I51
#[rustfmt::skip]
impl MyTrait for MyStruct { // $ item=I47 item=I50
fn f(&self) {
println!("main.rs::m8::<MyStruct as MyTrait>::f");
println!("main.rs::m8::<MyStruct as MyTrait>::f"); // $ item=println
f(); // $ item=I51
Self::g(self); // $ item=I54
} // I53
fn g(&self) {
println!("main.rs::m8::<MyStruct as MyTrait>::g");
println!("main.rs::m8::<MyStruct as MyTrait>::g"); // $ item=println
} // I54
} // I52
#[rustfmt::skip]
impl MyStruct { // $ item=I50
fn h(&self) {
println!("main.rs::m8::MyStruct::h");
println!("main.rs::m8::MyStruct::h"); // $ item=println
f(); // $ item=I51
} // I74
} // I73
@@ -207,7 +207,7 @@ mod m9 {
#[rustfmt::skip]
pub fn f() -> self::MyStruct { // $ item=I56
println!("main.rs::m9::f");
println!("main.rs::m9::f"); // $ item=println
self::MyStruct {} // $ item=I56
} // I57
}
@@ -312,7 +312,7 @@ mod m15 {
trait Trait2
: Trait1 { // $ item=I79
fn f(&self) {
println!("m15::Trait2::f");
println!("m15::Trait2::f"); // $ item=println
Self::g(self); // $ item=I80
self.g(); // $ item=I80
}
@@ -339,13 +339,13 @@ mod m15 {
impl Trait1 // $ item=I79
for S { // $ item=I81
fn f(&self) {
println!("m15::<S as Trait1>::f");
println!("m15::<S as Trait1>::f"); // $ item=println
Self::g(self); // $ item=I77
self.g(); // $ item=I77
} // I76
fn g(&self) {
println!("m15::<S as Trait1>::g");
println!("m15::<S as Trait1>::g"); // $ item=println
} // I77
}
@@ -353,13 +353,13 @@ mod m15 {
impl Trait2 // $ item=I82
for S { // $ item=I81
fn f(&self) {
println!("m15::<S as Trait2>::f");
println!("m15::<S as Trait2>::f"); // $ item=println
} // I78
}
#[rustfmt::skip]
pub fn f() {
println!("m15::f");
println!("m15::f"); // $ item=println
let x = S; // $ item=I81
<S // $ item=I81
as Trait1 // $ item=I79
@@ -399,7 +399,7 @@ mod m16 {
T // $ item=I87
> { // $ item=I86
fn f(&self) -> T { // $ item=I87
println!("m16::Trait2::f");
println!("m16::Trait2::f"); // $ item=println
Self::g(self); // $ item=I85
self.g(); // $ item=I85
Self::c // $ item=I94
@@ -414,13 +414,13 @@ mod m16 {
> // $ item=I86
for S { // $ item=I90
fn f(&self) -> S { // $ item=I90
println!("m16::<S as Trait1<S>>::f");
println!("m16::<S as Trait1<S>>::f"); // $ item=println
Self::g(self); // $ item=I92
self.g() // $ item=I92
} // I91
fn g(&self) -> S { // $ item=I90
println!("m16::<S as Trait1<S>>::g");
println!("m16::<S as Trait1<S>>::g"); // $ item=println
Self::c // $ item=I95
} // I92
@@ -434,14 +434,14 @@ mod m16 {
> // $ item=I89
for S { // $ item=I90
fn f(&self) -> S { // $ item=I90
println!("m16::<S as Trait2<S>>::f");
println!("m16::<S as Trait2<S>>::f"); // $ item=println
Self::c // $ MISSING: item=I95
} // I93
}
#[rustfmt::skip]
pub fn f() {
println!("m16::f");
println!("m16::f"); // $ item=println
let x = S; // $ item=I90
<S // $ item=I90
as Trait1<
@@ -480,13 +480,13 @@ mod trait_visibility {
#[rustfmt::skip]
impl Foo for X { // $ item=Foo item=X
fn a_method(&self) {
println!("foo!");
println!("foo!"); // $ item=println
} // X_Foo::a_method
}
#[rustfmt::skip]
impl Bar for X { // $ item=Bar item=X
fn a_method(&self) {
println!("bar!");
println!("bar!"); // $ item=println
} // X_Bar::a_method
}
}
@@ -529,7 +529,7 @@ mod m17 {
impl MyTrait // $ item=I2
for S { // $ item=I3
fn f(&self) {
println!("M17::MyTrait::f");
println!("M17::MyTrait::f"); // $ item=println
} // I4
}
@@ -552,17 +552,17 @@ mod m17 {
mod m18 {
fn f() {
println!("m18::f");
println!("m18::f"); // $ item=println
} // I101
pub mod m19 {
fn f() {
println!("m18::m19::f");
println!("m18::m19::f"); // $ item=println
} // I102
pub mod m20 {
pub fn g() {
println!("m18::m19::m20::g");
println!("m18::m19::m20::g"); // $ item=println
super::f(); // $ item=I102
super::super::f(); // $ item=I101
} // I103
@@ -613,7 +613,7 @@ mod m23 {
> // $ item=I2
for S { // $ item=I4
fn f(&self) {
println!("m23::<S as Trait1<S>>::f");
println!("m23::<S as Trait1<S>>::f"); // $ item=println
} // I5
}
@@ -667,14 +667,14 @@ mod m24 {
#[rustfmt::skip]
impl TraitA for Implementor { // $ item=I111 item=I118
fn trait_a_method(&self) {
println!("TraitA method called");
println!("TraitA method called"); // $ item=println
} // I119
}
#[rustfmt::skip]
impl TraitB for Implementor { // $ item=I113 item=I118
fn trait_b_method(&self) {
println!("TraitB method called");
println!("TraitB method called"); // $ item=println
} // I120
}

View File

@@ -3,11 +3,11 @@ pub mod nested; // I37
use nested::g; // $ item=I7
pub fn f() {
println!("my.rs::f");
println!("my.rs::f"); // $ item=println
} // I38
pub fn h() {
println!("my.rs::h");
println!("my.rs::h"); // $ item=println
g(); // $ item=I7
} // I39

View File

@@ -1,3 +1,3 @@
pub fn f() {
println!("my/my4/my5/mod.rs::f");
println!("my/my4/my5/mod.rs::f"); // $ item=println
} // I201

View File

@@ -1,22 +1,22 @@
pub mod nested1 {
pub mod nested2 {
pub fn f() {
println!("nested.rs:nested1::nested2::f");
println!("nested.rs:nested1::nested2::f"); // $ item=println
} // I4
fn g() {
println!("nested.rs:nested1::nested2::g");
println!("nested.rs:nested1::nested2::g"); // $ item=println
f(); // $ item=I4
} // I5
} // I3
fn g() {
println!("nested.rs:nested1::g");
println!("nested.rs:nested1::g"); // $ item=println
nested2::f(); // $ item=I4
} // I6
} // I1
pub fn g() {
println!("nested.rs::g");
println!("nested.rs::g"); // $ item=println
nested1::nested2::f(); // $ item=I4
} // I7

View File

@@ -1,7 +1,7 @@
pub mod nested2; // I8
fn g() {
println!("my2/mod.rs::g");
println!("my2/mod.rs::g"); // $ item=println
nested2::nested3::nested4::f(); // $ item=I12
} // I9

View File

@@ -1,5 +1,5 @@
pub fn f() {
println!("my2/my3/mod.rs::f");
println!("my2/my3/mod.rs::f"); // $ item=println
g(); // $ item=I9
h(); // $ item=I25
} // I200

View File

@@ -1,11 +1,11 @@
pub mod nested3 {
pub mod nested4 {
pub fn f() {
println!("nested2.rs::nested3::nested4::f");
println!("nested2.rs::nested3::nested4::f"); // $ item=println
} // I12
pub fn g() {
println!("nested2.rs::nested3::nested4::g");
println!("nested2.rs::nested3::nested4::g"); // $ item=println
} // I13
} // I11
} // I10
@@ -13,7 +13,7 @@ pub mod nested3 {
pub mod nested5 {
pub mod nested6 {
pub fn f() {
println!("nested2.rs::nested5::nested6::f");
println!("nested2.rs::nested5::nested6::f"); // $ item=println
} // I116
} // I115
} // I114
@@ -21,7 +21,7 @@ pub mod nested5 {
pub mod nested7 {
pub mod nested8 {
pub fn f() {
println!("nested2.rs::nested7::nested8::f");
println!("nested2.rs::nested7::nested8::f"); // $ item=println
} // I119
} // I118
} // I117

View File

@@ -61,26 +61,34 @@ resolvePath
| main.rs:14:5:14:5 | g | my2/nested2.rs:7:9:9:9 | fn g |
| main.rs:17:5:17:7 | my2 | main.rs:7:1:7:8 | mod my2 |
| main.rs:17:5:17:18 | ...::nested8_f | my2/nested2.rs:23:9:25:9 | fn f |
| main.rs:21:9:21:15 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:26:13:26:19 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:30:13:30:19 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:31:13:31:13 | f | main.rs:25:9:27:9 | fn f |
| main.rs:32:13:32:17 | super | main.rs:19:1:43:1 | mod m1 |
| main.rs:32:13:32:20 | ...::f | main.rs:20:5:22:5 | fn f |
| main.rs:36:17:36:21 | super | main.rs:24:5:42:5 | mod m2 |
| main.rs:36:17:36:24 | ...::f | main.rs:25:9:27:9 | fn f |
| main.rs:38:17:38:23 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:39:17:39:17 | f | main.rs:25:9:27:9 | fn f |
| main.rs:46:9:46:13 | super | main.rs:1:1:826:2 | SourceFile |
| main.rs:46:9:46:17 | ...::m1 | main.rs:19:1:43:1 | mod m1 |
| main.rs:46:9:46:21 | ...::m2 | main.rs:24:5:42:5 | mod m2 |
| main.rs:46:9:46:24 | ...::g | main.rs:29:9:33:9 | fn g |
| main.rs:49:9:49:15 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:50:9:50:9 | g | main.rs:29:9:33:9 | fn g |
| main.rs:57:5:57:11 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:62:13:62:14 | m1 | main.rs:19:1:43:1 | mod m1 |
| main.rs:62:13:62:18 | ...::m2 | main.rs:24:5:42:5 | mod m2 |
| main.rs:62:13:62:21 | ...::g | main.rs:29:9:33:9 | fn g |
| main.rs:63:9:63:9 | g | main.rs:29:9:33:9 | fn g |
| main.rs:66:9:66:15 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:67:17:67:19 | Foo | main.rs:65:9:65:21 | struct Foo |
| main.rs:70:13:70:15 | Foo | main.rs:59:5:59:17 | struct Foo |
| main.rs:72:5:72:5 | f | main.rs:61:5:68:5 | fn f |
| main.rs:74:5:74:8 | self | main.rs:1:1:826:2 | SourceFile |
| main.rs:74:5:74:11 | ...::i | main.rs:77:1:89:1 | fn i |
| main.rs:78:5:78:11 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:80:13:80:15 | Foo | main.rs:54:1:54:13 | struct Foo |
| main.rs:84:16:84:18 | i32 | {EXTERNAL LOCATION} | struct i32 |
| main.rs:87:17:87:19 | Foo | main.rs:83:9:85:9 | struct Foo |
@@ -93,7 +101,13 @@ resolvePath
| main.rs:93:57:93:63 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
| main.rs:93:57:93:66 | ...::g | my2/nested2.rs:7:9:9:9 | fn g |
| main.rs:93:80:93:86 | nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
| main.rs:104:5:104:11 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:105:5:105:15 | fn_in_macro | main.rs:95:1:101:1 | MacroRules |
| main.rs:105:18:105:24 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:106:5:106:22 | f_defined_in_macro | main.rs:105:18:105:42 | fn f_defined_in_macro |
| main.rs:111:9:111:15 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:117:9:117:15 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:121:9:121:15 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:123:13:123:17 | super | main.rs:1:1:826:2 | SourceFile |
| main.rs:123:13:123:21 | ...::m5 | main.rs:109:1:113:1 | mod m5 |
| main.rs:124:9:124:9 | f | main.rs:110:5:112:5 | fn f |
@@ -101,21 +115,27 @@ resolvePath
| main.rs:131:13:131:15 | i32 | {EXTERNAL LOCATION} | struct i32 |
| main.rs:134:16:134:18 | i32 | {EXTERNAL LOCATION} | struct i32 |
| main.rs:140:19:140:24 | MyEnum | main.rs:129:5:137:5 | enum MyEnum |
| main.rs:142:9:142:15 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:143:17:143:22 | MyEnum | main.rs:129:5:137:5 | enum MyEnum |
| main.rs:143:17:143:25 | ...::A | main.rs:130:9:132:9 | A |
| main.rs:144:17:144:22 | MyEnum | main.rs:129:5:137:5 | enum MyEnum |
| main.rs:144:17:144:25 | ...::B | main.rs:132:12:135:9 | B |
| main.rs:145:9:145:14 | MyEnum | main.rs:129:5:137:5 | enum MyEnum |
| main.rs:145:9:145:17 | ...::C | main.rs:135:12:136:9 | C |
| main.rs:154:13:154:19 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:155:13:155:13 | f | main.rs:162:5:164:5 | fn f |
| main.rs:156:13:156:16 | Self | main.rs:150:5:158:5 | trait MyTrait |
| main.rs:156:13:156:19 | ...::f | main.rs:151:9:151:20 | fn f |
| main.rs:163:9:163:15 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:167:10:167:16 | MyTrait | main.rs:150:5:158:5 | trait MyTrait |
| main.rs:167:22:167:29 | MyStruct | main.rs:160:5:160:22 | struct MyStruct |
| main.rs:169:13:169:19 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:170:13:170:13 | f | main.rs:162:5:164:5 | fn f |
| main.rs:171:13:171:16 | Self | main.rs:166:5:177:5 | impl MyTrait for MyStruct { ... } |
| main.rs:171:13:171:19 | ...::g | main.rs:174:9:176:9 | fn g |
| main.rs:175:13:175:19 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:180:10:180:17 | MyStruct | main.rs:160:5:160:22 | struct MyStruct |
| main.rs:182:13:182:19 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:183:13:183:13 | f | main.rs:162:5:164:5 | fn f |
| main.rs:189:17:189:24 | MyStruct | main.rs:160:5:160:22 | struct MyStruct |
| main.rs:190:9:190:15 | MyTrait | main.rs:150:5:158:5 | trait MyTrait |
@@ -130,6 +150,7 @@ resolvePath
| main.rs:200:9:200:19 | ...::h | main.rs:180:21:184:9 | fn h |
| main.rs:209:19:209:22 | self | main.rs:205:1:213:1 | mod m9 |
| main.rs:209:19:209:32 | ...::MyStruct | main.rs:206:5:206:26 | struct MyStruct |
| main.rs:210:9:210:15 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:211:9:211:12 | self | main.rs:205:1:213:1 | mod m9 |
| main.rs:211:9:211:22 | ...::MyStruct | main.rs:206:5:206:26 | struct MyStruct |
| main.rs:221:12:221:12 | T | main.rs:218:7:218:7 | T |
@@ -159,6 +180,7 @@ resolvePath
| main.rs:298:21:298:21 | f | main.rs:290:19:291:19 | struct f |
| main.rs:299:13:299:13 | f | main.rs:290:5:290:17 | fn f |
| main.rs:313:9:313:14 | Trait1 | main.rs:305:5:309:5 | trait Trait1 |
| main.rs:315:13:315:19 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:316:13:316:16 | Self | main.rs:311:5:319:5 | trait Trait2 |
| main.rs:316:13:316:19 | ...::g | main.rs:308:9:308:20 | fn g |
| main.rs:326:9:326:12 | Self | main.rs:321:5:334:5 | trait Trait3 |
@@ -172,10 +194,14 @@ resolvePath
| main.rs:331:13:331:17 | ...::g | main.rs:308:9:308:20 | fn g |
| main.rs:339:10:339:15 | Trait1 | main.rs:305:5:309:5 | trait Trait1 |
| main.rs:340:11:340:11 | S | main.rs:336:5:336:13 | struct S |
| main.rs:342:13:342:19 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:343:13:343:16 | Self | main.rs:338:5:350:5 | impl Trait1 for S { ... } |
| main.rs:343:13:343:19 | ...::g | main.rs:347:9:349:9 | fn g |
| main.rs:348:13:348:19 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:353:10:353:15 | Trait2 | main.rs:311:5:319:5 | trait Trait2 |
| main.rs:354:11:354:11 | S | main.rs:336:5:336:13 | struct S |
| main.rs:356:13:356:19 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:362:9:362:15 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:363:17:363:17 | S | main.rs:336:5:336:13 | struct S |
| main.rs:364:10:364:10 | S | main.rs:336:5:336:13 | struct S |
| main.rs:365:14:365:19 | Trait1 | main.rs:305:5:309:5 | trait Trait1 |
@@ -192,6 +218,7 @@ resolvePath
| main.rs:398:9:400:9 | Trait1::<...> | main.rs:376:5:392:5 | trait Trait1 |
| main.rs:399:11:399:11 | T | main.rs:396:7:396:7 | T |
| main.rs:401:24:401:24 | T | main.rs:396:7:396:7 | T |
| main.rs:402:13:402:19 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:403:13:403:16 | Self | main.rs:394:5:407:5 | trait Trait2 |
| main.rs:403:13:403:19 | ...::g | main.rs:382:9:383:9 | fn g |
| main.rs:405:13:405:16 | Self | main.rs:394:5:407:5 | trait Trait2 |
@@ -200,9 +227,11 @@ resolvePath
| main.rs:413:7:413:7 | S | main.rs:409:5:409:13 | struct S |
| main.rs:415:11:415:11 | S | main.rs:409:5:409:13 | struct S |
| main.rs:416:24:416:24 | S | main.rs:409:5:409:13 | struct S |
| main.rs:417:13:417:19 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:418:13:418:16 | Self | main.rs:411:5:429:5 | impl Trait1::<...> for S { ... } |
| main.rs:418:13:418:19 | ...::g | main.rs:422:9:425:9 | fn g |
| main.rs:422:24:422:24 | S | main.rs:409:5:409:13 | struct S |
| main.rs:423:13:423:19 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:424:13:424:16 | Self | main.rs:411:5:429:5 | impl Trait1::<...> for S { ... } |
| main.rs:424:13:424:19 | ...::c | main.rs:427:9:428:9 | Const |
| main.rs:427:18:427:18 | S | main.rs:409:5:409:13 | struct S |
@@ -211,7 +240,9 @@ resolvePath
| main.rs:433:7:433:7 | S | main.rs:409:5:409:13 | struct S |
| main.rs:435:11:435:11 | S | main.rs:409:5:409:13 | struct S |
| main.rs:436:24:436:24 | S | main.rs:409:5:409:13 | struct S |
| main.rs:437:13:437:19 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:438:13:438:16 | Self | main.rs:431:5:440:5 | impl Trait2::<...> for S { ... } |
| main.rs:444:9:444:15 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:445:17:445:17 | S | main.rs:409:5:409:13 | struct S |
| main.rs:446:10:446:10 | S | main.rs:409:5:409:13 | struct S |
| main.rs:447:14:449:11 | Trait1::<...> | main.rs:376:5:392:5 | trait Trait1 |
@@ -230,8 +261,10 @@ resolvePath
| main.rs:463:13:463:13 | S | main.rs:409:5:409:13 | struct S |
| main.rs:481:14:481:16 | Foo | main.rs:471:9:473:9 | trait Foo |
| main.rs:481:22:481:22 | X | main.rs:479:9:479:21 | struct X |
| main.rs:483:17:483:23 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:487:14:487:16 | Bar | main.rs:475:9:477:9 | trait Bar |
| main.rs:487:22:487:22 | X | main.rs:479:9:479:21 | struct X |
| main.rs:489:17:489:23 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:494:9:494:9 | m | main.rs:470:5:492:5 | mod m |
| main.rs:494:9:494:12 | ...::X | main.rs:479:9:479:21 | struct X |
| main.rs:497:17:497:17 | X | main.rs:479:9:479:21 | struct X |
@@ -252,6 +285,7 @@ resolvePath
| main.rs:516:13:516:28 | ...::a_method | main.rs:476:13:476:31 | fn a_method |
| main.rs:529:10:529:16 | MyTrait | main.rs:522:5:524:5 | trait MyTrait |
| main.rs:530:9:530:9 | S | main.rs:526:5:526:13 | struct S |
| main.rs:532:13:532:19 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:538:7:538:13 | MyTrait | main.rs:522:5:524:5 | trait MyTrait |
| main.rs:539:10:539:10 | T | main.rs:537:10:537:10 | T |
| main.rs:541:9:541:9 | T | main.rs:537:10:537:10 | T |
@@ -260,6 +294,9 @@ resolvePath
| main.rs:542:9:542:18 | ...::f | main.rs:523:9:523:20 | fn f |
| main.rs:547:9:547:9 | g | main.rs:536:5:543:5 | fn g |
| main.rs:548:11:548:11 | S | main.rs:526:5:526:13 | struct S |
| main.rs:555:9:555:15 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:560:13:560:19 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:565:17:565:23 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:566:17:566:21 | super | main.rs:558:5:570:5 | mod m19 |
| main.rs:566:17:566:24 | ...::f | main.rs:559:9:561:9 | fn f |
| main.rs:567:17:567:21 | super | main.rs:558:5:570:5 | mod m19 |
@@ -279,6 +316,7 @@ resolvePath
| main.rs:611:10:613:5 | Trait1::<...> | main.rs:601:5:606:5 | trait Trait1 |
| main.rs:612:7:612:10 | Self | main.rs:608:5:608:13 | struct S |
| main.rs:614:11:614:11 | S | main.rs:608:5:608:13 | struct S |
| main.rs:616:13:616:19 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:622:17:622:17 | S | main.rs:608:5:608:13 | struct S |
| main.rs:638:15:638:15 | T | main.rs:637:26:637:26 | T |
| main.rs:643:9:643:24 | GenericStruct::<...> | main.rs:636:5:639:5 | struct GenericStruct |
@@ -293,8 +331,10 @@ resolvePath
| main.rs:657:12:657:17 | TraitA | main.rs:628:5:630:5 | trait TraitA |
| main.rs:668:10:668:15 | TraitA | main.rs:628:5:630:5 | trait TraitA |
| main.rs:668:21:668:31 | Implementor | main.rs:665:5:665:23 | struct Implementor |
| main.rs:670:13:670:19 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:675:10:675:15 | TraitB | main.rs:632:5:634:5 | trait TraitB |
| main.rs:675:21:675:31 | Implementor | main.rs:665:5:665:23 | struct Implementor |
| main.rs:677:13:677:19 | println | {EXTERNAL LOCATION} | MacroRules |
| main.rs:683:24:683:34 | Implementor | main.rs:665:5:665:23 | struct Implementor |
| main.rs:684:23:684:35 | GenericStruct | main.rs:636:5:639:5 | struct GenericStruct |
| main.rs:690:9:690:36 | GenericStruct::<...> | main.rs:636:5:639:5 | struct GenericStruct |
@@ -425,6 +465,7 @@ resolvePath
| main.rs:824:5:824:11 | AStruct | main.rs:702:1:702:17 | struct AStruct |
| main.rs:825:5:825:29 | impl_with_attribute_macro | main.rs:770:1:789:1 | mod impl_with_attribute_macro |
| main.rs:825:5:825:35 | ...::test | main.rs:785:5:788:5 | fn test |
| my2/mod.rs:4:5:4:11 | println | {EXTERNAL LOCATION} | MacroRules |
| my2/mod.rs:5:5:5:11 | nested2 | my2/mod.rs:1:1:1:16 | mod nested2 |
| my2/mod.rs:5:5:5:20 | ...::nested3 | my2/nested2.rs:1:1:11:1 | mod nested3 |
| my2/mod.rs:5:5:5:29 | ...::nested4 | my2/nested2.rs:2:5:10:5 | mod nested4 |
@@ -445,6 +486,7 @@ resolvePath
| my2/mod.rs:18:5:18:19 | ...::Deref | {EXTERNAL LOCATION} | trait Deref |
| my2/mod.rs:25:9:25:13 | mymod | my2/mod.rs:22:1:23:10 | mod mymod |
| my2/mod.rs:25:9:25:16 | ...::f | my2/renamed.rs:1:1:1:13 | fn f |
| my2/my3/mod.rs:2:5:2:11 | println | {EXTERNAL LOCATION} | MacroRules |
| my2/my3/mod.rs:3:5:3:5 | g | my2/mod.rs:3:1:6:1 | fn g |
| my2/my3/mod.rs:4:5:4:5 | h | main.rs:56:1:75:1 | fn h |
| my2/my3/mod.rs:7:5:7:9 | super | my2/mod.rs:1:1:25:34 | SourceFile |
@@ -456,8 +498,14 @@ resolvePath
| my2/my3/mod.rs:10:5:10:20 | ...::nested6_f | my2/nested2.rs:15:9:17:9 | fn f |
| my2/my3/mod.rs:12:5:12:9 | super | my2/mod.rs:1:1:25:34 | SourceFile |
| my2/my3/mod.rs:14:16:14:20 | Deref | {EXTERNAL LOCATION} | trait Deref |
| my2/nested2.rs:4:13:4:19 | println | {EXTERNAL LOCATION} | MacroRules |
| my2/nested2.rs:8:13:8:19 | println | {EXTERNAL LOCATION} | MacroRules |
| my2/nested2.rs:16:13:16:19 | println | {EXTERNAL LOCATION} | MacroRules |
| my2/nested2.rs:24:13:24:19 | println | {EXTERNAL LOCATION} | MacroRules |
| my.rs:3:5:3:10 | nested | my.rs:1:1:1:15 | mod nested |
| my.rs:3:5:3:13 | ...::g | my/nested.rs:19:1:22:1 | fn g |
| my.rs:6:5:6:11 | println | {EXTERNAL LOCATION} | MacroRules |
| my.rs:10:5:10:11 | println | {EXTERNAL LOCATION} | MacroRules |
| my.rs:11:5:11:5 | g | my/nested.rs:19:1:22:1 | fn g |
| my.rs:18:9:18:11 | my4 | my.rs:14:1:16:1 | mod my4 |
| my.rs:18:9:18:16 | ...::my5 | my.rs:15:5:15:16 | mod my5 |
@@ -473,29 +521,39 @@ resolvePath
| my.rs:30:13:30:15 | i32 | {EXTERNAL LOCATION} | struct i32 |
| my.rs:33:16:33:18 | Err | {EXTERNAL LOCATION} | Err |
| my.rs:35:5:35:6 | Ok | {EXTERNAL LOCATION} | Ok |
| my/my4/my5/mod.rs:2:5:2:11 | println | {EXTERNAL LOCATION} | MacroRules |
| my/nested.rs:4:13:4:19 | println | {EXTERNAL LOCATION} | MacroRules |
| my/nested.rs:8:13:8:19 | println | {EXTERNAL LOCATION} | MacroRules |
| my/nested.rs:9:13:9:13 | f | my/nested.rs:3:9:5:9 | fn f |
| my/nested.rs:14:9:14:15 | println | {EXTERNAL LOCATION} | MacroRules |
| my/nested.rs:15:9:15:15 | nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
| my/nested.rs:15:9:15:18 | ...::f | my/nested.rs:3:9:5:9 | fn f |
| my/nested.rs:20:5:20:11 | println | {EXTERNAL LOCATION} | MacroRules |
| my/nested.rs:21:5:21:11 | nested1 | my/nested.rs:1:1:17:1 | mod nested1 |
| my/nested.rs:21:5:21:20 | ...::nested2 | my/nested.rs:2:5:11:5 | mod nested2 |
| my/nested.rs:21:5:21:23 | ...::f | my/nested.rs:3:9:5:9 | fn f |
| proc_macro.rs:1:5:1:14 | proc_macro | {EXTERNAL LOCATION} | Crate(proc_macro@0.0.0) |
| proc_macro.rs:1:5:1:27 | ...::TokenStream | {EXTERNAL LOCATION} | struct TokenStream |
| proc_macro.rs:2:5:2:9 | quote | {EXTERNAL LOCATION} | Crate(quote@1.0.40) |
| proc_macro.rs:2:5:2:16 | ...::quote | {EXTERNAL LOCATION} | MacroRules |
| proc_macro.rs:5:25:5:35 | TokenStream | {EXTERNAL LOCATION} | struct TokenStream |
| proc_macro.rs:5:44:5:54 | TokenStream | {EXTERNAL LOCATION} | struct TokenStream |
| proc_macro.rs:5:60:5:70 | TokenStream | {EXTERNAL LOCATION} | struct TokenStream |
| proc_macro.rs:6:16:6:18 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) |
| proc_macro.rs:6:16:6:37 | ...::parse_macro_input | {EXTERNAL LOCATION} | MacroRules |
| proc_macro.rs:6:48:6:50 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) |
| proc_macro.rs:6:48:6:58 | ...::LitStr | {EXTERNAL LOCATION} | struct LitStr |
| proc_macro.rs:6:48:6:58 | ...::parse::<...> | {EXTERNAL LOCATION} | fn parse |
| proc_macro.rs:7:19:7:21 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) |
| proc_macro.rs:7:19:7:40 | ...::parse_macro_input | {EXTERNAL LOCATION} | MacroRules |
| proc_macro.rs:7:51:7:53 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) |
| proc_macro.rs:7:51:7:61 | ...::ItemFn | {EXTERNAL LOCATION} | struct ItemFn |
| proc_macro.rs:7:51:7:61 | ...::parse::<...> | {EXTERNAL LOCATION} | fn parse |
| proc_macro.rs:8:21:8:23 | syn | {EXTERNAL LOCATION} | Crate(syn@2.0.103) |
| proc_macro.rs:8:21:8:30 | ...::Ident | {EXTERNAL LOCATION} | struct Ident |
| proc_macro.rs:8:21:8:35 | ...::new | {EXTERNAL LOCATION} | fn new |
| proc_macro.rs:8:38:8:43 | format | {EXTERNAL LOCATION} | MacroRules |
| proc_macro.rs:9:5:9:9 | quote | {EXTERNAL LOCATION} | MacroRules |
| proc_macro.rs:16:24:16:34 | TokenStream | {EXTERNAL LOCATION} | struct TokenStream |
| proc_macro.rs:16:43:16:53 | TokenStream | {EXTERNAL LOCATION} | struct TokenStream |
| proc_macro.rs:16:59:16:69 | TokenStream | {EXTERNAL LOCATION} | struct TokenStream |

View File

@@ -42,15 +42,11 @@ multipleCallTargets
| sqlx.rs:127:29:127:51 | unsafe_query_1.as_str() |
| sqlx.rs:128:29:128:53 | prepared_query_1.as_str() |
| sqlx.rs:131:54:131:74 | safe_query_1.as_str() |
| sqlx.rs:132:14:132:34 | ...::_print(...) |
| sqlx.rs:133:54:133:78 | prepared_query_1.as_str() |
| sqlx.rs:134:14:134:34 | ...::_print(...) |
| sqlx.rs:136:55:136:77 | unsafe_query_1.as_str() |
| sqlx.rs:137:55:137:79 | prepared_query_1.as_str() |
| sqlx.rs:140:54:140:74 | safe_query_1.as_str() |
| sqlx.rs:141:14:141:34 | ...::_print(...) |
| sqlx.rs:142:54:142:78 | prepared_query_1.as_str() |
| sqlx.rs:143:14:143:34 | ...::_print(...) |
| sqlx.rs:145:55:145:77 | unsafe_query_1.as_str() |
| sqlx.rs:146:55:146:79 | prepared_query_1.as_str() |
| sqlx.rs:149:25:149:45 | safe_query_1.as_str() |
@@ -68,15 +64,4 @@ multipleCallTargets
| sqlx.rs:186:25:186:49 | prepared_query_1.as_str() |
| sqlx.rs:188:29:188:51 | unsafe_query_1.as_str() |
| sqlx.rs:189:29:189:53 | prepared_query_1.as_str() |
| sqlx.rs:196:14:196:43 | ...::_print(...) |
| sqlx.rs:202:57:202:85 | ...::from(...) |
| sqlx.rs:203:14:203:46 | ...::_print(...) |
| sqlx.rs:205:14:205:33 | ...::_print(...) |
| sqlx.rs:207:27:207:41 | ...::_print(...) |
| sqlx.rs:208:28:208:43 | ...::_print(...) |
| sqlx.rs:211:14:211:34 | ...::_print(...) |
| sqlx.rs:213:27:213:41 | ...::_print(...) |
| sqlx.rs:214:28:214:43 | ...::_print(...) |
| sqlx.rs:217:14:217:36 | ...::_print(...) |
| sqlx.rs:219:27:219:41 | ...::_print(...) |
| sqlx.rs:220:28:220:43 | ...::_print(...) |

View File

@@ -1,75 +1,7 @@
multipleCallTargets
| test_logging.rs:42:5:42:10 | ...::max_level(...) |
| test_logging.rs:43:5:43:10 | ...::max_level(...) |
| test_logging.rs:44:5:44:9 | ...::max_level(...) |
| test_logging.rs:45:5:45:10 | ...::max_level(...) |
| test_logging.rs:46:5:46:9 | ...::max_level(...) |
| test_logging.rs:47:5:47:8 | ...::max_level(...) |
| test_logging.rs:50:5:50:10 | ...::max_level(...) |
| test_logging.rs:51:5:51:10 | ...::max_level(...) |
| test_logging.rs:52:5:52:10 | ...::max_level(...) |
| test_logging.rs:53:5:53:10 | ...::max_level(...) |
| test_logging.rs:54:5:54:10 | ...::max_level(...) |
| test_logging.rs:55:5:55:10 | ...::max_level(...) |
| test_logging.rs:56:5:56:10 | ...::max_level(...) |
| test_logging.rs:57:5:57:10 | ...::max_level(...) |
| test_logging.rs:58:5:58:10 | ...::max_level(...) |
| test_logging.rs:59:5:59:10 | ...::max_level(...) |
| test_logging.rs:60:5:60:10 | ...::max_level(...) |
| test_logging.rs:61:5:61:10 | ...::max_level(...) |
| test_logging.rs:64:5:64:8 | ...::max_level(...) |
| test_logging.rs:65:5:65:8 | ...::max_level(...) |
| test_logging.rs:66:5:66:8 | ...::max_level(...) |
| test_logging.rs:67:5:67:8 | ...::max_level(...) |
| test_logging.rs:68:5:68:8 | ...::max_level(...) |
| test_logging.rs:71:5:71:10 | ...::max_level(...) |
| test_logging.rs:72:5:72:10 | ...::max_level(...) |
| test_logging.rs:73:5:73:10 | ...::max_level(...) |
| test_logging.rs:74:5:74:10 | ...::max_level(...) |
| test_logging.rs:75:5:75:10 | ...::max_level(...) |
| test_logging.rs:76:5:76:10 | ...::max_level(...) |
| test_logging.rs:77:5:77:10 | ...::max_level(...) |
| test_logging.rs:77:20:77:36 | password.as_str() |
| test_logging.rs:78:5:78:10 | ...::max_level(...) |
| test_logging.rs:78:22:78:38 | password.as_str() |
| test_logging.rs:81:5:81:10 | ...::max_level(...) |
| test_logging.rs:82:5:82:10 | ...::max_level(...) |
| test_logging.rs:83:5:83:10 | ...::max_level(...) |
| test_logging.rs:84:5:84:10 | ...::max_level(...) |
| test_logging.rs:85:5:85:10 | ...::max_level(...) |
| test_logging.rs:86:5:86:10 | ...::max_level(...) |
| test_logging.rs:88:18:88:34 | password.as_str() |
| test_logging.rs:89:5:89:10 | ...::max_level(...) |
| test_logging.rs:90:5:90:10 | ...::max_level(...) |
| test_logging.rs:94:5:94:9 | ...::max_level(...) |
| test_logging.rs:97:5:97:9 | ...::max_level(...) |
| test_logging.rs:100:5:100:9 | ...::max_level(...) |
| test_logging.rs:104:5:104:9 | ...::max_level(...) |
| test_logging.rs:108:5:108:9 | ...::max_level(...) |
| test_logging.rs:112:5:112:9 | ...::max_level(...) |
| test_logging.rs:114:9:114:13 | ...::max_level(...) |
| test_logging.rs:118:5:118:10 | ...::max_level(...) |
| test_logging.rs:121:5:121:10 | ...::max_level(...) |
| test_logging.rs:123:5:123:10 | ...::max_level(...) |
| test_logging.rs:126:5:126:10 | ...::max_level(...) |
| test_logging.rs:130:5:130:10 | ...::max_level(...) |
| test_logging.rs:131:5:131:10 | ...::max_level(...) |
| test_logging.rs:132:5:132:10 | ...::max_level(...) |
| test_logging.rs:133:5:133:10 | ...::max_level(...) |
| test_logging.rs:140:5:140:9 | ...::max_level(...) |
| test_logging.rs:141:5:141:9 | ...::max_level(...) |
| test_logging.rs:142:5:142:9 | ...::max_level(...) |
| test_logging.rs:143:5:143:9 | ...::max_level(...) |
| test_logging.rs:144:5:144:9 | ...::max_level(...) |
| test_logging.rs:150:5:150:9 | ...::max_level(...) |
| test_logging.rs:151:5:151:9 | ...::max_level(...) |
| test_logging.rs:152:5:152:9 | ...::max_level(...) |
| test_logging.rs:153:5:153:9 | ...::max_level(...) |
| test_logging.rs:154:5:154:9 | ...::max_level(...) |
| test_logging.rs:192:12:192:37 | ...::_print(...) |
| test_logging.rs:193:14:193:37 | ...::_print(...) |
| test_logging.rs:194:13:194:38 | ...::_eprint(...) |
| test_logging.rs:195:15:195:38 | ...::_eprint(...) |
| test_logging.rs:229:30:229:71 | ... .as_str() |
| test_logging.rs:242:16:242:61 | ... .as_bytes() |
| test_logging.rs:245:20:245:65 | ... .as_bytes() |
@@ -134,9 +66,3 @@ multipleCallTargets
| test_storage.rs:188:29:188:86 | ...::from(...) |
| test_storage.rs:189:28:189:82 | ...::from(...) |
| test_storage.rs:190:28:190:81 | ...::from(...) |
| test_storage.rs:217:14:217:47 | ...::_print(...) |
| test_storage.rs:219:27:219:41 | ...::_print(...) |
| test_storage.rs:220:28:220:43 | ...::_print(...) |
| test_storage.rs:223:14:223:51 | ...::_print(...) |
| test_storage.rs:225:27:225:41 | ...::_print(...) |
| test_storage.rs:226:28:226:43 | ...::_print(...) |