Merge branch 'main' into post-release-prep/codeql-cli-2.25.0

This commit is contained in:
Óscar San José
2026-03-19 13:07:00 +01:00
committed by GitHub
71 changed files with 2031 additions and 1831 deletions

View File

@@ -45,3 +45,5 @@ updates:
directory: "/"
schedule:
interval: weekly
exclude-paths:
- "misc/bazel/registry/**"

View File

@@ -15,8 +15,8 @@ local_path_override(
# see https://registry.bazel.build/ for a list of available packages
bazel_dep(name = "platforms", version = "1.0.0")
bazel_dep(name = "rules_cc", version = "0.2.16")
bazel_dep(name = "rules_go", version = "0.59.0")
bazel_dep(name = "rules_cc", version = "0.2.17")
bazel_dep(name = "rules_go", version = "0.60.0")
bazel_dep(name = "rules_java", version = "9.0.3")
bazel_dep(name = "rules_pkg", version = "1.0.1")
bazel_dep(name = "rules_nodejs", version = "6.7.3")

View File

@@ -524,6 +524,12 @@ class Function extends Declaration, ControlFlowNode, AccessHolder, @function {
not exists(NewOrNewArrayExpr new | e = new.getAllocatorCall().getArgument(0))
)
}
/**
* Holds if this function has an ambiguous return type, meaning that zero or multiple return
* types for this function are present in the database (this can occur in `build-mode: none`).
*/
predicate hasAmbiguousReturnType() { count(this.getType()) != 1 }
}
pragma[noinline]

View File

@@ -218,7 +218,9 @@ where
// only report if we cannot prove that the result of the
// multiplication will be less (resp. greater) than the
// maximum (resp. minimum) number we can compute.
overflows(me, t1)
overflows(me, t1) and
// exclude cases where the expression type may not have been extracted accurately
not me.getParent().(Call).getTarget().hasAmbiguousReturnType()
select me,
"Multiplication result may overflow '" + me.getType().toString() + "' before it is converted to '"
+ me.getFullyConverted().getType().toString() + "'."

View File

@@ -4,7 +4,7 @@
* allows for a cross-site scripting vulnerability.
* @kind path-problem
* @problem.severity error
* @security-severity 6.1
* @security-severity 7.8
* @precision high
* @id cpp/cgi-xss
* @tags security

View File

@@ -0,0 +1,4 @@
---
category: minorAnalysis
---
* Fixed an issue with the "Multiplication result converted to larger type" (`cpp/integer-multiplication-cast-to-long`) query causing false positive results in `build-mode: none` databases.

View File

@@ -0,0 +1,4 @@
---
category: queryMetadata
---
* The `@security-severity` metadata of `cpp/cgi-xss` has been increased from 6.1 (medium) to 7.8 (high).

View File

@@ -0,0 +1,28 @@
// semmle-extractor-options: --expect_errors
void test_float_double1(float f, double d) {
float r1 = f * f; // GOOD
float r2 = f * d; // GOOD
double r3 = f * f; // BAD
double r4 = f * d; // GOOD
float f1 = fabsf(f * f); // GOOD
float f2 = fabsf(f * d); // GOOD
double f3 = fabs(f * f); // BAD [NOT DETECTED]
double f4 = fabs(f * d); // GOOD
}
double fabs(double f);
float fabsf(float f);
void test_float_double2(float f, double d) {
float r1 = f * f; // GOOD
float r2 = f * d; // GOOD
double r3 = f * f; // BAD
double r4 = f * d; // GOOD
float f1 = fabsf(f * f); // GOOD
float f2 = fabsf(f * d); // GOOD
double f3 = fabs(f * f); // BAD [NOT DETECTED]
double f4 = fabs(f * d); // GOOD
}

View File

@@ -1,3 +1,5 @@
| Buildless.c:6:17:6:21 | ... * ... | Multiplication result may overflow 'float' before it is converted to 'double'. |
| Buildless.c:21:17:21:21 | ... * ... | Multiplication result may overflow 'float' before it is converted to 'double'. |
| IntMultToLong.c:4:10:4:14 | ... * ... | Multiplication result may overflow 'int' before it is converted to 'long long'. |
| IntMultToLong.c:7:16:7:20 | ... * ... | Multiplication result may overflow 'int' before it is converted to 'long long'. |
| IntMultToLong.c:18:19:18:23 | ... * ... | Multiplication result may overflow 'float' before it is converted to 'double'. |

View File

@@ -336,6 +336,22 @@ class ExtensionTypeExtensionMethod extends ExtensionMethodImpl {
ExtensionTypeExtensionMethod() { this.isInExtension() }
}
/**
* A non-static member with an initializer, for example a field `int Field = 0`.
*/
private class InitializedInstanceMember extends Member {
private AssignExpr ae;
InitializedInstanceMember() {
not this.isStatic() and
expr_parent_top_level(ae, _, this) and
not ae = getExpressionBody(_)
}
/** Gets the initializer expression. */
AssignExpr getInitializer() { result = ae }
}
/**
* An object initializer method.
*
@@ -347,6 +363,17 @@ class ExtensionTypeExtensionMethod extends ExtensionMethodImpl {
*/
class ObjectInitMethod extends Method {
ObjectInitMethod() { this.getName() = "<object initializer>" }
/**
* Holds if this object initializer method performs the initialization
* of a member via assignment `init`.
*/
predicate initializes(AssignExpr init) {
exists(InitializedInstanceMember m |
this.getDeclaringType().getAMember() = m and
init = m.getInitializer()
)
}
}
/**

View File

@@ -214,6 +214,8 @@ private module Cached {
parent*(enclosingStart(cfe), c.(Constructor).getInitializer())
or
parent*(cfe, c.(Constructor).getObjectInitializerCall())
or
parent*(cfe, any(AssignExpr init | c.(ObjectInitMethod).initializes(init)))
}
/** Holds if the enclosing statement of expression `e` is `s`. */

View File

@@ -10,42 +10,15 @@ private import semmle.code.csharp.ExprOrStmtParent
private import semmle.code.csharp.commons.Compilation
private module Initializers {
/**
* A non-static member with an initializer, for example a field `int Field = 0`.
*/
class InitializedInstanceMember extends Member {
private AssignExpr ae;
InitializedInstanceMember() {
not this.isStatic() and
expr_parent_top_level(ae, _, this) and
not ae = any(Callable c).getExpressionBody()
}
/** Gets the initializer expression. */
AssignExpr getInitializer() { result = ae }
}
/**
* Holds if `obinit` is an object initializer method that performs the initialization
* of a member via assignment `init`.
*/
predicate obinitInitializes(ObjectInitMethod obinit, AssignExpr init) {
exists(InitializedInstanceMember m |
obinit.getDeclaringType().getAMember() = m and
init = m.getInitializer()
)
}
/**
* Gets the `i`th member initializer expression for object initializer method `obinit`
* in compilation `comp`.
*/
AssignExpr initializedInstanceMemberOrder(ObjectInitMethod obinit, CompilationExt comp, int i) {
obinitInitializes(obinit, result) and
obinit.initializes(result) and
result =
rank[i + 1](AssignExpr ae0, Location l |
obinitInitializes(obinit, ae0) and
obinit.initializes(ae0) and
l = ae0.getLocation() and
getCompilation(l.getFile()) = comp
|
@@ -74,7 +47,7 @@ class CfgScope extends Element, @top_level_exprorstmt_parent {
any(Callable c |
c.(Constructor).hasInitializer()
or
Initializers::obinitInitializes(c, _)
c.(ObjectInitMethod).initializes(_)
or
c.hasBody()
)

View File

@@ -4,7 +4,7 @@
* allows for a cross-site scripting vulnerability.
* @kind path-problem
* @problem.severity error
* @security-severity 6.1
* @security-severity 7.8
* @precision high
* @id cs/web/xss
* @tags security

View File

@@ -4,7 +4,7 @@
* insertion of forged log entries by a malicious user.
* @kind path-problem
* @problem.severity error
* @security-severity 7.8
* @security-severity 6.1
* @precision high
* @id cs/log-forging
* @tags security

View File

@@ -0,0 +1,5 @@
---
category: queryMetadata
---
* The `@security-severity` metadata of `cs/log-forging` has been reduced from 7.8 (high) to 6.1 (medium).
* The `@security-severity` metadata of `cs/web/xss` has been increased from 6.1 (medium) to 7.8 (high).

View File

@@ -24,6 +24,7 @@
| ExactCallable.cs:15:25:15:35 | Run`2 | ExactCallable.cs:172:21:172:33 | MethodWithOut |
| ExactCallable.cs:15:25:15:35 | Run`2 | ExactCallable.cs:177:21:177:34 | MethodWithOut2 |
| ExactCallable.cs:182:21:182:22 | M1 | ExactCallable.cs:187:21:187:22 | M2 |
| TypeFlow.cs:3:7:3:14 | <object initializer> | TypeFlow.cs:22:20:22:22 | set_Prop |
| TypeFlow.cs:5:5:5:12 | TypeFlow | TypeFlow.cs:24:10:24:12 | Run |
| TypeFlow.cs:24:10:24:12 | Run | TypeFlow.cs:12:29:12:34 | Method |
| TypeFlow.cs:24:10:24:12 | Run | TypeFlow.cs:17:30:17:35 | Method |

View File

@@ -56,11 +56,11 @@ gvn
| StructuralComparison.cs:3:14:3:18 | this access | (kind:Expr(12),false,Class) |
| StructuralComparison.cs:3:14:3:18 | {...} | (kind:Stmt(1)) |
| StructuralComparison.cs:5:26:5:26 | access to field x | (kind:Expr(16),true,x) |
| StructuralComparison.cs:5:26:5:26 | this access | (kind:Expr(12)) |
| StructuralComparison.cs:5:26:5:26 | this access | (kind:Expr(12),false,Class) |
| StructuralComparison.cs:5:26:5:30 | ... = ... | ((kind:Expr(16),true,x) :: (0 :: (kind:Expr(63)))) |
| StructuralComparison.cs:5:30:5:30 | 0 | 0 |
| StructuralComparison.cs:6:26:6:26 | access to field y | (kind:Expr(16),true,y) |
| StructuralComparison.cs:6:26:6:26 | this access | (kind:Expr(12)) |
| StructuralComparison.cs:6:26:6:26 | this access | (kind:Expr(12),false,Class) |
| StructuralComparison.cs:6:26:6:30 | ... = ... | ((kind:Expr(16),true,y) :: (1 :: (kind:Expr(63)))) |
| StructuralComparison.cs:6:30:6:30 | 1 | 1 |
| StructuralComparison.cs:8:24:8:24 | 0 | 0 |

View File

@@ -5,7 +5,7 @@
* scripting vulnerability.
* @kind path-problem
* @problem.severity error
* @security-severity 6.1
* @security-severity 7.8
* @precision high
* @id go/html-template-escaping-bypass-xss
* @tags security

View File

@@ -4,7 +4,7 @@
* a cross-site scripting vulnerability.
* @kind path-problem
* @problem.severity error
* @security-severity 6.1
* @security-severity 7.8
* @precision high
* @id go/reflected-xss
* @tags security

View File

@@ -4,7 +4,7 @@
* a stored cross-site scripting vulnerability.
* @kind path-problem
* @problem.severity error
* @security-severity 6.1
* @security-severity 7.8
* @precision low
* @id go/stored-xss
* @tags security

View File

@@ -4,7 +4,7 @@
* insertion of forged log entries by a malicious user.
* @kind path-problem
* @problem.severity error
* @security-severity 7.8
* @security-severity 6.1
* @precision medium
* @id go/log-injection
* @tags security

View File

@@ -0,0 +1,5 @@
---
category: queryMetadata
---
* The `@security-severity` metadata of `go/log-injection` has been reduced from 7.8 (high) to 6.1 (medium).
* The `@security-severity` metadata of `go/html-template-escaping-bypass-xss`, `go/reflected-xss` and `go/stored-xss` has been increased from 6.1 (medium) to 7.8 (high).

View File

@@ -4,7 +4,7 @@
* @description Exposing a Java object in a WebView with a JavaScript interface can lead to malicious JavaScript controlling the application.
* @kind problem
* @problem.severity warning
* @security-severity 6.1
* @security-severity 7.8
* @precision medium
* @tags security
* external/cwe/cwe-079

View File

@@ -4,7 +4,7 @@
* @kind problem
* @id java/android/websettings-javascript-enabled
* @problem.severity warning
* @security-severity 6.1
* @security-severity 7.8
* @precision medium
* @tags security
* external/cwe/cwe-079

View File

@@ -4,7 +4,7 @@
* allows for a cross-site scripting vulnerability.
* @kind path-problem
* @problem.severity error
* @security-severity 6.1
* @security-severity 7.8
* @precision high
* @id java/xss
* @tags security

View File

@@ -4,7 +4,7 @@
* insertion of forged log entries by malicious users.
* @kind path-problem
* @problem.severity error
* @security-severity 7.8
* @security-severity 6.1
* @precision medium
* @id java/log-injection
* @tags security

View File

@@ -0,0 +1,5 @@
---
category: queryMetadata
---
* The `@security-severity` metadata of `java/log-injection` has been reduced from 7.8 (high) to 6.1 (medium).
* The `@security-severity` metadata of `java/android/webview-addjavascriptinterface`, `java/android/websettings-javascript-enabled` and `java/xss` has been increased from 6.1 (medium) to 7.8 (high).

View File

@@ -0,0 +1,5 @@
---
category: fix
---
- Fixed the resolution of relative imports such as `from . import helper` inside namespace packages (directories without an `__init__.py` file), which previously did not work correctly, leading to missing flow.

View File

@@ -17,6 +17,10 @@ private predicate valid_module_name(string name) {
exists(Module m | m.getName() = name)
or
exists(Builtin cmod | cmod.getClass() = Builtin::special("ModuleType") and cmod.getName() = name)
or
// Namespace packages may not have a corresponding Module entity,
// but their names are still valid for the purpose of import resolution.
name = moduleNameFromFile(any(Folder f))
}
/** An artificial expression representing an import */

View File

@@ -4,7 +4,7 @@
* cause a cross-site scripting vulnerability.
* @kind problem
* @problem.severity error
* @security-severity 6.1
* @security-severity 7.8
* @precision medium
* @id py/jinja2/autoescape-false
* @tags security

View File

@@ -4,7 +4,7 @@
* allows for a cross-site scripting vulnerability.
* @kind path-problem
* @problem.severity error
* @security-severity 6.1
* @security-severity 7.8
* @sub-severity high
* @precision high
* @id py/reflective-xss

View File

@@ -4,7 +4,7 @@
* insertion of forged log entries by a malicious user.
* @kind path-problem
* @problem.severity error
* @security-severity 7.8
* @security-severity 6.1
* @precision medium
* @id py/log-injection
* @tags security

View File

@@ -0,0 +1,5 @@
---
category: queryMetadata
---
* The `@security-severity` metadata of `py/log-injection` has been reduced from 7.8 (high) to 6.1 (medium).
* The `@security-severity` metadata of `py/jinja2/autoescape-false` and `py/reflective-xss` has been increased from 6.1 (medium) to 7.8 (high).

View File

@@ -0,0 +1,5 @@
from . import helper
def use_relative():
tainted = source()
helper.process(tainted)

View File

@@ -0,0 +1,5 @@
def process(value):
sink(value) #$ flow=source
def process2(value):
sink(value) #$ flow=source

View File

@@ -0,0 +1,5 @@
from .. import helper
def use_multi_level_relative():
tainted = source()
helper.process2(tainted)

View File

@@ -0,0 +1,35 @@
import python
import semmle.python.dataflow.new.DataFlow
import semmle.python.dataflow.new.TaintTracking
import utils.test.InlineExpectationsTest
private module TestConfig implements DataFlow::ConfigSig {
predicate isSource(DataFlow::Node node) {
node.(DataFlow::CallCfgNode).getFunction().asCfgNode().(NameNode).getId() = "source"
}
predicate isSink(DataFlow::Node node) {
exists(DataFlow::CallCfgNode call |
call.getFunction().asCfgNode().(NameNode).getId() = "sink" and
node = call.getArg(0)
)
}
}
private module TestFlow = TaintTracking::Global<TestConfig>;
module FlowTest implements TestSig {
string getARelevantTag() { result = "flow" }
predicate hasActualResult(Location location, string element, string tag, string value) {
exists(DataFlow::Node sink |
TestFlow::flow(_, sink) and
tag = "flow" and
location = sink.getLocation() and
value = "source" and
element = sink.toString()
)
}
}
import MakeTest<FlowTest>

View File

@@ -0,0 +1,5 @@
---
category: queryMetadata
---
* The `@security-severity` metadata of `rb/log-injection` has been reduced from 7.8 (high) to 6.1 (medium).
* The `@security-severity` metadata of `rb/reflected-xss`, `rb/stored-xss` and `rb/html-constructed-from-input` has been increased from 6.1 (medium) to 7.8 (high).

View File

@@ -4,7 +4,7 @@
* allows for a cross-site scripting vulnerability.
* @kind path-problem
* @problem.severity error
* @security-severity 6.1
* @security-severity 7.8
* @sub-severity high
* @precision high
* @id rb/reflected-xss

View File

@@ -4,7 +4,7 @@
* a stored cross-site scripting vulnerability.
* @kind path-problem
* @problem.severity error
* @security-severity 6.1
* @security-severity 7.8
* @precision high
* @id rb/stored-xss
* @tags security

View File

@@ -4,7 +4,7 @@
* user to perform a cross-site scripting attack.
* @kind path-problem
* @problem.severity error
* @security-severity 6.1
* @security-severity 7.8
* @precision high
* @id rb/html-constructed-from-input
* @tags security

View File

@@ -4,7 +4,7 @@
* insertion of forged log entries by a malicious user.
* @kind path-problem
* @problem.severity error
* @security-severity 7.8
* @security-severity 6.1
* @precision medium
* @id rb/log-injection
* @tags security

View File

@@ -33,5 +33,11 @@ module Impl {
result = "impl " + trait + this.getSelfTy().toAbbreviatedString() + " { ... }"
)
}
/**
* Holds if this is an inherent `impl` block, that is, one that does not implement a trait.
*/
pragma[nomagic]
predicate isInherent() { not this.hasTrait() }
}
}

View File

@@ -6,7 +6,15 @@ module Impl {
private newtype TArgumentPosition =
TPositionalArgumentPosition(int i) {
i in [0 .. max([any(ParamList l).getNumberOfParams(), any(ArgList l).getNumberOfArgs()]) - 1]
// For the type `FunctionPosition` used by type inference, we work with function-call syntax
// adjusted positions, so a call like `x.m(a, b, c)` needs positions `0` through `3`; for this
// reason, there is no `- 1` after `max(...)` below.
i in [0 .. max([
any(ParamList l).getNumberOfParams(),
any(ArgList l).getNumberOfArgs(),
any(StructFieldList l).getNumberOfFields() // Positions are used for struct expressions in type inference
]
)]
} or
TSelfArgumentPosition() or
TTypeQualifierArgumentPosition()

View File

@@ -50,5 +50,10 @@ module Impl {
or
result = this.getVariant().getStructField(name)
}
/** Gets the `i`th struct field of the instantiated struct or variant. */
StructField getNthStructField(int i) {
result = [this.getStruct().getNthStructField(i), this.getVariant().getNthStructField(i)]
}
}
}

View File

@@ -35,6 +35,12 @@ module Impl {
/** Gets a record field, if any. */
StructField getAStructField() { result = this.getStructField(_) }
/** Gets the `i`th struct field, if any. */
pragma[nomagic]
StructField getNthStructField(int i) {
result = this.getFieldList().(StructFieldList).getField(i)
}
/** Gets the `i`th tuple field, if any. */
pragma[nomagic]
TupleField getTupleField(int i) { result = this.getFieldList().(TupleFieldList).getField(i) }

View File

@@ -42,6 +42,13 @@ module Impl {
)
}
/** Gets the `i`th struct field of the instantiated struct or variant. */
StructField getNthStructField(int i) {
exists(PathResolution::ItemNode item | item = this.getResolvedPath(_) |
result = [item.(Struct).getNthStructField(i), item.(Variant).getNthStructField(i)]
)
}
/** Gets the struct pattern for the field `name`. */
pragma[nomagic]
StructPatField getPatField(string name) {

View File

@@ -32,6 +32,12 @@ module Impl {
result.getName().getText() = name
}
/** Gets the `i`th struct field, if any. */
pragma[nomagic]
StructField getNthStructField(int i) {
result = this.getFieldList().(StructFieldList).getField(i)
}
/** Gets the `i`th tuple field, if any. */
pragma[nomagic]
TupleField getTupleField(int i) { result = this.getFieldList().(TupleFieldList).getField(i) }

View File

@@ -41,16 +41,19 @@ private predicate hasFirstNonTrivialTraitBound(TypeParamItemNode tp, Trait trait
*/
pragma[nomagic]
predicate isBlanketLike(ImplItemNode i, TypePath blanketSelfPath, TypeParam blanketTypeParam) {
blanketTypeParam = i.getBlanketImplementationTypeParam() and
blanketSelfPath.isEmpty()
or
exists(TypeMention tm, Type root, TypeParameter tp |
tm = i.(Impl).getSelfTy() and
complexSelfRoot(root, tp) and
tm.getType() = root and
tm.getTypeAt(blanketSelfPath) = TTypeParamTypeParameter(blanketTypeParam) and
blanketSelfPath = TypePath::singleton(tp) and
hasFirstNonTrivialTraitBound(blanketTypeParam, _)
i.(Impl).hasTrait() and
(
blanketTypeParam = i.getBlanketImplementationTypeParam() and
blanketSelfPath.isEmpty()
or
exists(TypeMention tm, Type root, TypeParameter tp |
tm = i.(Impl).getSelfTy() and
complexSelfRoot(root, tp) and
tm.getType() = root and
tm.getTypeAt(blanketSelfPath) = TTypeParamTypeParameter(blanketTypeParam) and
blanketSelfPath = TypePath::singleton(tp) and
hasFirstNonTrivialTraitBound(blanketTypeParam, _)
)
)
}

View File

@@ -124,7 +124,8 @@ private predicate functionResolutionDependsOnArgumentCand(
implHasSibling(impl, trait) and
traitTypeParameterOccurrence(trait, _, functionName, pos, path, traitTp) and
f = impl.getASuccessor(functionName) and
not pos.isSelfOrTypeQualifier()
not pos.isTypeQualifier() and
not (f instanceof Method and pos.asPosition() = 0)
)
}

View File

@@ -6,17 +6,23 @@ private import TypeMention
private import TypeInference
private newtype TFunctionPosition =
TArgumentFunctionPosition(ArgumentPosition pos) or
TArgumentFunctionPosition(ArgumentPosition pos) { not pos.isSelf() } or
TReturnFunctionPosition()
/**
* A position of a type related to a function.
* A function-call adjusted position of a type related to a function.
*
* Either `self`, `return`, or a positional parameter index.
* Either `return` or a positional parameter index, where `self` is translated
* to position `0` and subsequent positional parameters at index `i` are
* translated to position `i + 1`.
*
* Function-call adjusted positions are needed when resolving calls of the
* form `Foo::f(x_1, ..., x_n)`, where we do not know up front whether `f` is a
* method or a non-method, and hence we need to be able to match `x_1` against
* both a potential `self` parameter and a potential first positional parameter
* (and `x_2, ... x_n` against all subsequent positional parameters).
*/
class FunctionPosition extends TFunctionPosition {
predicate isSelf() { this.asArgumentPosition().isSelf() }
int asPosition() { result = this.asArgumentPosition().asPosition() }
predicate isPosition() { exists(this.asPosition()) }
@@ -25,29 +31,18 @@ class FunctionPosition extends TFunctionPosition {
predicate isTypeQualifier() { this.asArgumentPosition().isTypeQualifier() }
predicate isSelfOrTypeQualifier() { this.isSelf() or this.isTypeQualifier() }
predicate isReturn() { this = TReturnFunctionPosition() }
/** Gets the corresponding position when `f` is invoked via a function call. */
bindingset[f]
FunctionPosition getFunctionCallAdjusted(Function f) {
this.isReturn() and
result = this
or
if f.hasSelfParam()
then
this.isSelf() and result.asPosition() = 0
or
result.asPosition() = this.asPosition() + 1
else result = this
}
TypeMention getTypeMention(Function f) {
this.isSelf() and
result = getSelfParamTypeMention(f.getSelfParam())
or
result = f.getParam(this.asPosition()).getTypeRepr()
(
if f instanceof Method
then
result = f.getParam(this.asPosition() - 1).getTypeRepr()
or
result = getSelfParamTypeMention(f.getSelfParam()) and
this.asPosition() = 0
else result = f.getParam(this.asPosition()).getTypeRepr()
)
or
this.isReturn() and
result = getReturnTypeMention(f)
@@ -197,8 +192,7 @@ class AssocFunctionType extends MkAssocFunctionType {
exists(Function f, ImplOrTraitItemNode i, FunctionPosition pos | this.appliesTo(f, i, pos) |
result = pos.getTypeMention(f)
or
pos.isSelf() and
not f.hasSelfParam() and
pos.isTypeQualifier() and
result = [i.(Impl).getSelfTy().(AstNode), i.(Trait).getName()]
)
}
@@ -209,7 +203,7 @@ class AssocFunctionType extends MkAssocFunctionType {
}
pragma[nomagic]
private Trait getALookupTrait(Type t) {
Trait getALookupTrait(Type t) {
result = t.(TypeParamTypeParameter).getTypeParam().(TypeParamItemNode).resolveABound()
or
result = t.(SelfTypeParameter).getTrait()
@@ -310,10 +304,11 @@ signature module ArgsAreInstantiationsOfInputSig {
* Holds if `f` inside `i` needs to have the type corresponding to type parameter
* `tp` checked.
*
* If `i` is an inherent implementation, `tp` is a type parameter of the type being
* implemented, otherwise `tp` is a type parameter of the trait (being implemented).
* `tp` is a type parameter of the trait being implemented by `f` or the trait to which
* `f` belongs.
*
* `pos` is one of the positions in `f` in which the relevant type occours.
* `pos` is one of the function-call adjusted positions in `f` in which the relevant
* type occurs.
*/
predicate toCheck(ImplOrTraitItemNode i, Function f, TypeParameter tp, FunctionPosition pos);
@@ -360,7 +355,7 @@ module ArgsAreInstantiationsOf<ArgsAreInstantiationsOfInputSig Input> {
private newtype TCallAndPos =
MkCallAndPos(Input::Call call, FunctionPosition pos) { exists(call.getArgType(pos, _)) }
/** A call tagged with a position. */
/** A call tagged with a function-call adjusted position. */
private class CallAndPos extends MkCallAndPos {
Input::Call call;
FunctionPosition pos;
@@ -413,20 +408,21 @@ module ArgsAreInstantiationsOf<ArgsAreInstantiationsOfInputSig Input> {
pragma[nomagic]
private predicate argIsInstantiationOf(
Input::Call call, FunctionPosition pos, ImplOrTraitItemNode i, Function f, int rnk
Input::Call call, ImplOrTraitItemNode i, Function f, int rnk
) {
ArgIsInstantiationOfToIndex::argIsInstantiationOf(MkCallAndPos(call, pos), i, _) and
toCheckRanked(i, f, _, pos, rnk)
exists(FunctionPosition pos |
ArgIsInstantiationOfToIndex::argIsInstantiationOf(MkCallAndPos(call, pos), i, _) and
toCheckRanked(i, f, _, pos, rnk)
)
}
pragma[nomagic]
private predicate argsAreInstantiationsOfToIndex(
Input::Call call, ImplOrTraitItemNode i, Function f, int rnk
) {
exists(FunctionPosition pos |
argIsInstantiationOf(call, pos, i, f, rnk) and
call.hasTargetCand(i, f)
|
argIsInstantiationOf(call, i, f, rnk) and
call.hasTargetCand(i, f) and
(
rnk = 0
or
argsAreInstantiationsOfToIndex(call, i, f, rnk - 1)

View File

@@ -0,0 +1,5 @@
---
category: queryMetadata
---
* The `@security-severity` metadata of `rust/log-injection` has been increased from 2.6 (low) to 6.1 (medium).
* The `@security-severity` metadata of `rust/xss` has been increased from 6.1 (medium) to 7.8 (high).

View File

@@ -4,7 +4,7 @@
* allows for a cross-site scripting vulnerability.
* @kind path-problem
* @problem.severity error
* @security-severity 6.1
* @security-severity 7.8
* @precision high
* @id rust/xss
* @tags security

View File

@@ -4,7 +4,7 @@
* insertion of forged log entries by a malicious user.
* @kind path-problem
* @problem.severity error
* @security-severity 2.6
* @security-severity 6.1
* @precision medium
* @id rust/log-injection
* @tags security

View File

@@ -1,6 +0,0 @@
multipleResolvedTargets
| test.rs:389:30:389:67 | pinned.poll_read(...) |
| test.rs:416:26:416:54 | pinned.poll_fill_buf(...) |
| test.rs:423:27:423:71 | ... .poll_fill_buf(...) |
| test.rs:447:30:447:67 | pinned.poll_read(...) |
| test.rs:470:26:470:54 | pinned.poll_fill_buf(...) |

View File

@@ -100,7 +100,9 @@ edges
| main.rs:161:10:161:18 | source(...) | main.rs:161:10:161:25 | ... .shr(...) | provenance | MaD:30 |
| main.rs:162:19:162:27 | source(...) | main.rs:162:10:162:28 | 1i64.shr(...) | provenance | MaD:30 |
| main.rs:164:10:164:18 | source(...) | main.rs:164:10:164:30 | ... .bitor(...) | provenance | MaD:19 |
| main.rs:165:10:165:18 | source(...) | main.rs:165:10:165:27 | ... .bitor(...) | provenance | MaD:19 |
| main.rs:166:21:166:29 | source(...) | main.rs:166:10:166:30 | 1i64.bitor(...) | provenance | MaD:19 |
| main.rs:167:18:167:26 | source(...) | main.rs:167:10:167:27 | 1.bitor(...) | provenance | MaD:19 |
| main.rs:170:5:170:5 | [post] a | main.rs:171:5:171:5 | a | provenance | |
| main.rs:170:5:170:5 | [post] a | main.rs:172:5:172:5 | a | provenance | |
| main.rs:170:5:170:5 | [post] a | main.rs:173:5:173:5 | a | provenance | |
@@ -351,8 +353,12 @@ nodes
| main.rs:162:19:162:27 | source(...) | semmle.label | source(...) |
| main.rs:164:10:164:18 | source(...) | semmle.label | source(...) |
| main.rs:164:10:164:30 | ... .bitor(...) | semmle.label | ... .bitor(...) |
| main.rs:165:10:165:18 | source(...) | semmle.label | source(...) |
| main.rs:165:10:165:27 | ... .bitor(...) | semmle.label | ... .bitor(...) |
| main.rs:166:10:166:30 | 1i64.bitor(...) | semmle.label | 1i64.bitor(...) |
| main.rs:166:21:166:29 | source(...) | semmle.label | source(...) |
| main.rs:167:10:167:27 | 1.bitor(...) | semmle.label | 1.bitor(...) |
| main.rs:167:18:167:26 | source(...) | semmle.label | source(...) |
| main.rs:170:5:170:5 | [post] a | semmle.label | [post] a |
| main.rs:170:18:170:26 | source(...) | semmle.label | source(...) |
| main.rs:171:5:171:5 | [post] a | semmle.label | [post] a |
@@ -516,7 +522,9 @@ testFailures
| main.rs:161:10:161:25 | ... .shr(...) | main.rs:161:10:161:18 | source(...) | main.rs:161:10:161:25 | ... .shr(...) | $@ | main.rs:161:10:161:18 | source(...) | source(...) |
| main.rs:162:10:162:28 | 1i64.shr(...) | main.rs:162:19:162:27 | source(...) | main.rs:162:10:162:28 | 1i64.shr(...) | $@ | main.rs:162:19:162:27 | source(...) | source(...) |
| main.rs:164:10:164:30 | ... .bitor(...) | main.rs:164:10:164:18 | source(...) | main.rs:164:10:164:30 | ... .bitor(...) | $@ | main.rs:164:10:164:18 | source(...) | source(...) |
| main.rs:165:10:165:27 | ... .bitor(...) | main.rs:165:10:165:18 | source(...) | main.rs:165:10:165:27 | ... .bitor(...) | $@ | main.rs:165:10:165:18 | source(...) | source(...) |
| main.rs:166:10:166:30 | 1i64.bitor(...) | main.rs:166:21:166:29 | source(...) | main.rs:166:10:166:30 | 1i64.bitor(...) | $@ | main.rs:166:21:166:29 | source(...) | source(...) |
| main.rs:167:10:167:27 | 1.bitor(...) | main.rs:167:18:167:26 | source(...) | main.rs:167:10:167:27 | 1.bitor(...) | $@ | main.rs:167:18:167:26 | source(...) | source(...) |
| main.rs:176:10:176:10 | a | main.rs:170:18:170:26 | source(...) | main.rs:176:10:176:10 | a | $@ | main.rs:170:18:170:26 | source(...) | source(...) |
| main.rs:176:10:176:10 | a | main.rs:171:18:171:26 | source(...) | main.rs:176:10:176:10 | a | $@ | main.rs:171:18:171:26 | source(...) | source(...) |
| main.rs:176:10:176:10 | a | main.rs:172:18:172:26 | source(...) | main.rs:176:10:176:10 | a | $@ | main.rs:172:18:172:26 | source(...) | source(...) |

View File

@@ -162,9 +162,9 @@ fn std_ops() {
sink(1i64.shr(source(2))); // $ hasTaintFlow=2
sink(source(1).bitor(2i64)); // $ hasTaintFlow=1
sink(source(1).bitor(2)); // $ MISSING: hasTaintFlow=1
sink(source(1).bitor(2)); // $ hasTaintFlow=1
sink(1i64.bitor(source(2))); // $ hasTaintFlow=2
sink(1.bitor(source(2))); // $ MISSING: hasTaintFlow=2
sink(1.bitor(source(2))); // $ hasTaintFlow=2
let mut a: i64 = 1;
a.add_assign(source(2));

View File

@@ -1,4 +1,4 @@
multipleResolvedTargets
| main.rs:2223:9:2223:31 | ... .my_add(...) |
| main.rs:2225:9:2225:29 | ... .my_add(...) |
| main.rs:2733:13:2733:17 | x.f() |
| main.rs:2740:13:2740:17 | x.f() |

View File

@@ -2643,6 +2643,10 @@ mod context_typed {
fn f(self) {}
}
fn free_function<T: Default>() -> T {
Default::default() // $ target=default
}
pub fn f() {
let x = None; // $ type=x:T.i32
let x: Option<i32> = x;
@@ -2693,6 +2697,9 @@ mod context_typed {
let s = Default::default(); // $ target=default type=s:S
S::f(s); // $ target=f
let z = free_function(); // $ target=free_function type=z:i32
x.push(z); // $ target=push
}
}

View File

@@ -400,3 +400,52 @@ mod from_default {
x
}
}
mod inherent_before_trait {
struct S<T>(T);
trait Trait {
fn foo(&self);
fn bar(&self);
}
impl S<i32> {
// S<i32>::foo
fn foo(x: &Self) {}
// S<i32>::bar
fn bar(&self) {}
}
impl Trait for S<i32> {
// <S<i32>_as_Trait>::foo
fn foo(&self) {
S::foo(self); // $ MISSING: target=S<i32>::foo
S::<i32>::foo(self); // $ target=S<i32>::foo
self.foo() // $ target=<S<i32>_as_Trait>::foo
}
// <S<i32>_as_Trait>::bar
fn bar(&self) {
S::bar(self); // $ target=S<i32>::bar
S::<i32>::bar(self); // $ target=S<i32>::bar
self.bar() // $ target=S<i32>::bar
}
}
impl Trait for S<i64> {
// <S<i64>_as_Trait>::foo
fn foo(&self) {
// `S::foo(self);` is not valid
S::<i64>::foo(self); // $ target=<S<i64>_as_Trait>::foo
self.foo() // $ target=<S<i64>_as_Trait>::foo
}
// <S<i64>_as_Trait>::bar
fn bar(&self) {
// `S::bar(self);` is not valid
S::<i64>::bar(self); // $ target=<S<i64>_as_Trait>::bar
self.bar() // $ target=<S<i64>_as_Trait>::bar
}
}
}

View File

@@ -74,3 +74,35 @@ mod regression2 {
let x = s1 - &s2; // $ target=S1SubRefS2 type=x:S2
}
}
mod regression3 {
trait SomeTrait {}
trait MyFrom<T> {
fn my_from(value: T) -> Self;
}
impl<T> MyFrom<T> for T {
fn my_from(s: T) -> Self {
s
}
}
impl<T> MyFrom<T> for Option<T> {
fn my_from(val: T) -> Option<T> {
Some(val)
}
}
pub struct S<Ts>(Ts);
pub fn f<T1, T2>(x: T2) -> T2
where
T2: SomeTrait + MyFrom<Option<T1>>,
Option<T1>: MyFrom<T2>,
{
let y = MyFrom::my_from(x); // $ target=my_from
let z = MyFrom::my_from(y); // $ target=my_from
z
}
}

View File

@@ -3630,130 +3630,133 @@ inferCertainType
| main.rs:2633:29:2633:29 | a | | {EXTERNAL LOCATION} | () |
| main.rs:2643:14:2643:17 | SelfParam | | main.rs:2639:5:2640:13 | S |
| main.rs:2643:20:2643:21 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2646:16:2696:5 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2648:13:2648:13 | x | | {EXTERNAL LOCATION} | Option |
| main.rs:2648:13:2648:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2652:26:2652:28 | opt | | {EXTERNAL LOCATION} | Option |
| main.rs:2652:26:2652:28 | opt | T | main.rs:2652:23:2652:23 | T |
| main.rs:2652:42:2652:42 | x | | main.rs:2652:23:2652:23 | T |
| main.rs:2652:48:2652:49 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2655:9:2655:24 | pin_option(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2662:13:2662:13 | x | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2662:17:2662:39 | ...::A {...} | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2663:13:2663:13 | x | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2663:13:2663:13 | x | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2663:13:2663:13 | x | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2663:40:2663:40 | x | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2664:13:2664:13 | x | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2664:13:2664:13 | x | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2664:17:2664:52 | ...::A {...} | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2664:17:2664:52 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2666:13:2666:13 | x | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2666:13:2666:13 | x | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2666:17:2668:9 | ...::B::<...> {...} | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2666:17:2668:9 | ...::B::<...> {...} | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2667:20:2667:32 | ...::new(...) | | {EXTERNAL LOCATION} | String |
| main.rs:2670:29:2670:29 | e | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2670:29:2670:29 | e | T1 | main.rs:2670:26:2670:26 | T |
| main.rs:2670:29:2670:29 | e | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2670:53:2670:53 | x | | main.rs:2670:26:2670:26 | T |
| main.rs:2670:59:2670:60 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2673:13:2673:13 | x | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2673:17:2675:9 | ...::B {...} | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2674:20:2674:32 | ...::new(...) | | {EXTERNAL LOCATION} | String |
| main.rs:2676:9:2676:27 | pin_my_either(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2676:23:2676:23 | x | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2679:13:2679:13 | x | | {EXTERNAL LOCATION} | Result |
| main.rs:2679:13:2679:13 | x | E | {EXTERNAL LOCATION} | String |
| main.rs:2679:13:2679:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2683:29:2683:31 | res | | {EXTERNAL LOCATION} | Result |
| main.rs:2683:29:2683:31 | res | E | main.rs:2683:26:2683:26 | E |
| main.rs:2683:29:2683:31 | res | T | main.rs:2683:23:2683:23 | T |
| main.rs:2683:48:2683:48 | x | | main.rs:2683:26:2683:26 | E |
| main.rs:2683:54:2683:55 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2686:9:2686:28 | pin_result(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2686:23:2686:27 | false | | {EXTERNAL LOCATION} | bool |
| main.rs:2688:17:2688:17 | x | | {EXTERNAL LOCATION} | Vec |
| main.rs:2688:17:2688:17 | x | A | {EXTERNAL LOCATION} | Global |
| main.rs:2688:21:2688:30 | ...::new(...) | | {EXTERNAL LOCATION} | Vec |
| main.rs:2688:21:2688:30 | ...::new(...) | A | {EXTERNAL LOCATION} | Global |
| main.rs:2689:9:2689:9 | x | | {EXTERNAL LOCATION} | Vec |
| main.rs:2689:9:2689:9 | x | A | {EXTERNAL LOCATION} | Global |
| main.rs:2692:9:2692:9 | x | | {EXTERNAL LOCATION} | Vec |
| main.rs:2692:9:2692:9 | x | A | {EXTERNAL LOCATION} | Global |
| main.rs:2695:9:2695:15 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2702:14:2702:17 | SelfParam | | main.rs:2700:5:2708:5 | Self [trait MyTrait] |
| main.rs:2705:14:2705:18 | SelfParam | | {EXTERNAL LOCATION} | & |
| main.rs:2705:14:2705:18 | SelfParam | TRef | main.rs:2700:5:2708:5 | Self [trait MyTrait] |
| main.rs:2705:21:2705:25 | other | | {EXTERNAL LOCATION} | & |
| main.rs:2705:21:2705:25 | other | TRef | main.rs:2700:5:2708:5 | Self [trait MyTrait] |
| main.rs:2705:44:2707:9 | { ... } | | {EXTERNAL LOCATION} | & |
| main.rs:2705:44:2707:9 | { ... } | TRef | main.rs:2700:5:2708:5 | Self [trait MyTrait] |
| main.rs:2706:13:2706:16 | self | | {EXTERNAL LOCATION} | & |
| main.rs:2706:13:2706:16 | self | TRef | main.rs:2700:5:2708:5 | Self [trait MyTrait] |
| main.rs:2712:14:2712:17 | SelfParam | | {EXTERNAL LOCATION} | i32 |
| main.rs:2712:28:2714:9 | { ... } | | {EXTERNAL LOCATION} | i32 |
| main.rs:2713:13:2713:16 | self | | {EXTERNAL LOCATION} | i32 |
| main.rs:2719:14:2719:17 | SelfParam | | {EXTERNAL LOCATION} | usize |
| main.rs:2719:28:2721:9 | { ... } | | {EXTERNAL LOCATION} | usize |
| main.rs:2720:13:2720:16 | self | | {EXTERNAL LOCATION} | usize |
| main.rs:2726:14:2726:17 | SelfParam | | {EXTERNAL LOCATION} | & |
| main.rs:2726:14:2726:17 | SelfParam | TRef | main.rs:2724:10:2724:10 | T |
| main.rs:2726:28:2728:9 | { ... } | | {EXTERNAL LOCATION} | & |
| main.rs:2726:28:2728:9 | { ... } | TRef | main.rs:2724:10:2724:10 | T |
| main.rs:2727:13:2727:16 | self | | {EXTERNAL LOCATION} | & |
| main.rs:2727:13:2727:16 | self | TRef | main.rs:2724:10:2724:10 | T |
| main.rs:2731:25:2735:5 | { ... } | | {EXTERNAL LOCATION} | usize |
| main.rs:2737:12:2745:5 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2738:13:2738:13 | x | | {EXTERNAL LOCATION} | usize |
| main.rs:2739:13:2739:13 | y | | {EXTERNAL LOCATION} | & |
| main.rs:2739:17:2739:18 | &1 | | {EXTERNAL LOCATION} | & |
| main.rs:2740:17:2740:17 | x | | {EXTERNAL LOCATION} | usize |
| main.rs:2740:21:2740:21 | y | | {EXTERNAL LOCATION} | & |
| main.rs:2743:13:2743:13 | y | | {EXTERNAL LOCATION} | usize |
| main.rs:2744:23:2744:23 | y | | {EXTERNAL LOCATION} | usize |
| main.rs:2755:11:2790:1 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2756:5:2756:21 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2757:5:2757:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo |
| main.rs:2758:5:2758:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo |
| main.rs:2758:20:2758:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
| main.rs:2758:41:2758:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
| main.rs:2759:5:2759:35 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2760:5:2760:41 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2761:5:2761:45 | ...::test(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2762:5:2762:30 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2646:41:2648:5 | { ... } | | main.rs:2646:22:2646:31 | T |
| main.rs:2650:16:2703:5 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2652:13:2652:13 | x | | {EXTERNAL LOCATION} | Option |
| main.rs:2652:13:2652:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2656:26:2656:28 | opt | | {EXTERNAL LOCATION} | Option |
| main.rs:2656:26:2656:28 | opt | T | main.rs:2656:23:2656:23 | T |
| main.rs:2656:42:2656:42 | x | | main.rs:2656:23:2656:23 | T |
| main.rs:2656:48:2656:49 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2659:9:2659:24 | pin_option(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2666:13:2666:13 | x | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2666:17:2666:39 | ...::A {...} | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2667:13:2667:13 | x | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2667:13:2667:13 | x | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2667:13:2667:13 | x | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2667:40:2667:40 | x | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2668:13:2668:13 | x | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2668:13:2668:13 | x | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2668:17:2668:52 | ...::A {...} | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2668:17:2668:52 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2670:13:2670:13 | x | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2670:13:2670:13 | x | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2670:17:2672:9 | ...::B::<...> {...} | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2670:17:2672:9 | ...::B::<...> {...} | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2671:20:2671:32 | ...::new(...) | | {EXTERNAL LOCATION} | String |
| main.rs:2674:29:2674:29 | e | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2674:29:2674:29 | e | T1 | main.rs:2674:26:2674:26 | T |
| main.rs:2674:29:2674:29 | e | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2674:53:2674:53 | x | | main.rs:2674:26:2674:26 | T |
| main.rs:2674:59:2674:60 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2677:13:2677:13 | x | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2677:17:2679:9 | ...::B {...} | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2678:20:2678:32 | ...::new(...) | | {EXTERNAL LOCATION} | String |
| main.rs:2680:9:2680:27 | pin_my_either(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2680:23:2680:23 | x | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2683:13:2683:13 | x | | {EXTERNAL LOCATION} | Result |
| main.rs:2683:13:2683:13 | x | E | {EXTERNAL LOCATION} | String |
| main.rs:2683:13:2683:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2687:29:2687:31 | res | | {EXTERNAL LOCATION} | Result |
| main.rs:2687:29:2687:31 | res | E | main.rs:2687:26:2687:26 | E |
| main.rs:2687:29:2687:31 | res | T | main.rs:2687:23:2687:23 | T |
| main.rs:2687:48:2687:48 | x | | main.rs:2687:26:2687:26 | E |
| main.rs:2687:54:2687:55 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2690:9:2690:28 | pin_result(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2690:23:2690:27 | false | | {EXTERNAL LOCATION} | bool |
| main.rs:2692:17:2692:17 | x | | {EXTERNAL LOCATION} | Vec |
| main.rs:2692:17:2692:17 | x | A | {EXTERNAL LOCATION} | Global |
| main.rs:2692:21:2692:30 | ...::new(...) | | {EXTERNAL LOCATION} | Vec |
| main.rs:2692:21:2692:30 | ...::new(...) | A | {EXTERNAL LOCATION} | Global |
| main.rs:2693:9:2693:9 | x | | {EXTERNAL LOCATION} | Vec |
| main.rs:2693:9:2693:9 | x | A | {EXTERNAL LOCATION} | Global |
| main.rs:2696:9:2696:9 | x | | {EXTERNAL LOCATION} | Vec |
| main.rs:2696:9:2696:9 | x | A | {EXTERNAL LOCATION} | Global |
| main.rs:2699:9:2699:15 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2702:9:2702:9 | x | | {EXTERNAL LOCATION} | Vec |
| main.rs:2702:9:2702:9 | x | A | {EXTERNAL LOCATION} | Global |
| main.rs:2709:14:2709:17 | SelfParam | | main.rs:2707:5:2715:5 | Self [trait MyTrait] |
| main.rs:2712:14:2712:18 | SelfParam | | {EXTERNAL LOCATION} | & |
| main.rs:2712:14:2712:18 | SelfParam | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] |
| main.rs:2712:21:2712:25 | other | | {EXTERNAL LOCATION} | & |
| main.rs:2712:21:2712:25 | other | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] |
| main.rs:2712:44:2714:9 | { ... } | | {EXTERNAL LOCATION} | & |
| main.rs:2712:44:2714:9 | { ... } | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] |
| main.rs:2713:13:2713:16 | self | | {EXTERNAL LOCATION} | & |
| main.rs:2713:13:2713:16 | self | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] |
| main.rs:2719:14:2719:17 | SelfParam | | {EXTERNAL LOCATION} | i32 |
| main.rs:2719:28:2721:9 | { ... } | | {EXTERNAL LOCATION} | i32 |
| main.rs:2720:13:2720:16 | self | | {EXTERNAL LOCATION} | i32 |
| main.rs:2726:14:2726:17 | SelfParam | | {EXTERNAL LOCATION} | usize |
| main.rs:2726:28:2728:9 | { ... } | | {EXTERNAL LOCATION} | usize |
| main.rs:2727:13:2727:16 | self | | {EXTERNAL LOCATION} | usize |
| main.rs:2733:14:2733:17 | SelfParam | | {EXTERNAL LOCATION} | & |
| main.rs:2733:14:2733:17 | SelfParam | TRef | main.rs:2731:10:2731:10 | T |
| main.rs:2733:28:2735:9 | { ... } | | {EXTERNAL LOCATION} | & |
| main.rs:2733:28:2735:9 | { ... } | TRef | main.rs:2731:10:2731:10 | T |
| main.rs:2734:13:2734:16 | self | | {EXTERNAL LOCATION} | & |
| main.rs:2734:13:2734:16 | self | TRef | main.rs:2731:10:2731:10 | T |
| main.rs:2738:25:2742:5 | { ... } | | {EXTERNAL LOCATION} | usize |
| main.rs:2744:12:2752:5 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2745:13:2745:13 | x | | {EXTERNAL LOCATION} | usize |
| main.rs:2746:13:2746:13 | y | | {EXTERNAL LOCATION} | & |
| main.rs:2746:17:2746:18 | &1 | | {EXTERNAL LOCATION} | & |
| main.rs:2747:17:2747:17 | x | | {EXTERNAL LOCATION} | usize |
| main.rs:2747:21:2747:21 | y | | {EXTERNAL LOCATION} | & |
| main.rs:2750:13:2750:13 | y | | {EXTERNAL LOCATION} | usize |
| main.rs:2751:23:2751:23 | y | | {EXTERNAL LOCATION} | usize |
| main.rs:2762:11:2797:1 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2763:5:2763:21 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2764:5:2764:27 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2765:5:2765:32 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2766:5:2766:23 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2767:5:2767:36 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2768:5:2768:35 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2769:5:2769:29 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2770:5:2770:23 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2771:5:2771:24 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2772:5:2772:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2773:5:2773:18 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2774:5:2774:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future |
| main.rs:2774:5:2774:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () |
| main.rs:2775:5:2775:19 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2776:5:2776:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2777:5:2777:14 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2778:5:2778:27 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2779:5:2779:15 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2780:5:2780:43 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2781:5:2781:15 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2782:5:2782:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2783:5:2783:28 | ...::test(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2784:5:2784:23 | ...::test(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2785:5:2785:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2786:5:2786:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2787:5:2787:20 | ...::test(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2788:5:2788:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box |
| main.rs:2788:5:2788:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global |
| main.rs:2788:5:2788:20 | ...::f(...) | T | main.rs:2547:5:2549:5 | dyn MyTrait |
| main.rs:2788:5:2788:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 |
| main.rs:2788:16:2788:19 | true | | {EXTERNAL LOCATION} | bool |
| main.rs:2789:5:2789:23 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2764:5:2764:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo |
| main.rs:2765:5:2765:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo |
| main.rs:2765:20:2765:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
| main.rs:2765:41:2765:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
| main.rs:2766:5:2766:35 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2767:5:2767:41 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2768:5:2768:45 | ...::test(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2769:5:2769:30 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2770:5:2770:21 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2771:5:2771:27 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2772:5:2772:32 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2773:5:2773:23 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2774:5:2774:36 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2775:5:2775:35 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2776:5:2776:29 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2777:5:2777:23 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2778:5:2778:24 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2779:5:2779:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2780:5:2780:18 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2781:5:2781:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future |
| main.rs:2781:5:2781:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () |
| main.rs:2782:5:2782:19 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2783:5:2783:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2784:5:2784:14 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2785:5:2785:27 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2786:5:2786:15 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2787:5:2787:43 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2788:5:2788:15 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2789:5:2789:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2790:5:2790:28 | ...::test(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2791:5:2791:23 | ...::test(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2792:5:2792:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2793:5:2793:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2794:5:2794:20 | ...::test(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2795:5:2795:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box |
| main.rs:2795:5:2795:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global |
| main.rs:2795:5:2795:20 | ...::f(...) | T | main.rs:2547:5:2549:5 | dyn MyTrait |
| main.rs:2795:5:2795:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 |
| main.rs:2795:16:2795:19 | true | | {EXTERNAL LOCATION} | bool |
| main.rs:2796:5:2796:23 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| overloading.rs:4:19:4:23 | SelfParam | | {EXTERNAL LOCATION} | & |
| overloading.rs:4:19:4:23 | SelfParam | TRef | overloading.rs:2:5:11:5 | Self [trait FirstTrait] |
| overloading.rs:4:34:6:9 | { ... } | | {EXTERNAL LOCATION} | bool |
@@ -4012,6 +4015,70 @@ inferCertainType
| overloading.rs:397:10:397:10 | b | | {EXTERNAL LOCATION} | bool |
| overloading.rs:397:25:401:5 | { ... } | | overloading.rs:372:5:372:14 | S1 |
| overloading.rs:398:20:398:20 | b | | {EXTERNAL LOCATION} | bool |
| overloading.rs:408:16:408:20 | SelfParam | | {EXTERNAL LOCATION} | & |
| overloading.rs:408:16:408:20 | SelfParam | TRef | overloading.rs:407:5:410:5 | Self [trait Trait] |
| overloading.rs:409:16:409:20 | SelfParam | | {EXTERNAL LOCATION} | & |
| overloading.rs:409:16:409:20 | SelfParam | TRef | overloading.rs:407:5:410:5 | Self [trait Trait] |
| overloading.rs:414:16:414:16 | x | | {EXTERNAL LOCATION} | & |
| overloading.rs:414:16:414:16 | x | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:414:16:414:16 | x | TRef.T | {EXTERNAL LOCATION} | i32 |
| overloading.rs:414:26:414:27 | { ... } | | {EXTERNAL LOCATION} | () |
| overloading.rs:417:16:417:20 | SelfParam | | {EXTERNAL LOCATION} | & |
| overloading.rs:417:16:417:20 | SelfParam | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:417:16:417:20 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 |
| overloading.rs:417:23:417:24 | { ... } | | {EXTERNAL LOCATION} | () |
| overloading.rs:422:16:422:20 | SelfParam | | {EXTERNAL LOCATION} | & |
| overloading.rs:422:16:422:20 | SelfParam | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:422:16:422:20 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 |
| overloading.rs:422:23:426:9 | { ... } | | {EXTERNAL LOCATION} | () |
| overloading.rs:423:13:423:24 | ...::foo(...) | | {EXTERNAL LOCATION} | () |
| overloading.rs:423:20:423:23 | self | | {EXTERNAL LOCATION} | & |
| overloading.rs:423:20:423:23 | self | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:423:20:423:23 | self | TRef.T | {EXTERNAL LOCATION} | i32 |
| overloading.rs:424:13:424:31 | ...::foo(...) | | {EXTERNAL LOCATION} | () |
| overloading.rs:424:27:424:30 | self | | {EXTERNAL LOCATION} | & |
| overloading.rs:424:27:424:30 | self | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:424:27:424:30 | self | TRef.T | {EXTERNAL LOCATION} | i32 |
| overloading.rs:425:13:425:16 | self | | {EXTERNAL LOCATION} | & |
| overloading.rs:425:13:425:16 | self | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:425:13:425:16 | self | TRef.T | {EXTERNAL LOCATION} | i32 |
| overloading.rs:429:16:429:20 | SelfParam | | {EXTERNAL LOCATION} | & |
| overloading.rs:429:16:429:20 | SelfParam | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:429:16:429:20 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 |
| overloading.rs:429:23:433:9 | { ... } | | {EXTERNAL LOCATION} | () |
| overloading.rs:430:13:430:24 | ...::bar(...) | | {EXTERNAL LOCATION} | () |
| overloading.rs:430:20:430:23 | self | | {EXTERNAL LOCATION} | & |
| overloading.rs:430:20:430:23 | self | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:430:20:430:23 | self | TRef.T | {EXTERNAL LOCATION} | i32 |
| overloading.rs:431:13:431:31 | ...::bar(...) | | {EXTERNAL LOCATION} | () |
| overloading.rs:431:27:431:30 | self | | {EXTERNAL LOCATION} | & |
| overloading.rs:431:27:431:30 | self | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:431:27:431:30 | self | TRef.T | {EXTERNAL LOCATION} | i32 |
| overloading.rs:432:13:432:16 | self | | {EXTERNAL LOCATION} | & |
| overloading.rs:432:13:432:16 | self | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:432:13:432:16 | self | TRef.T | {EXTERNAL LOCATION} | i32 |
| overloading.rs:438:16:438:20 | SelfParam | | {EXTERNAL LOCATION} | & |
| overloading.rs:438:16:438:20 | SelfParam | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:438:16:438:20 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i64 |
| overloading.rs:438:23:442:9 | { ... } | | {EXTERNAL LOCATION} | () |
| overloading.rs:440:13:440:31 | ...::foo(...) | | {EXTERNAL LOCATION} | () |
| overloading.rs:440:27:440:30 | self | | {EXTERNAL LOCATION} | & |
| overloading.rs:440:27:440:30 | self | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:440:27:440:30 | self | TRef.T | {EXTERNAL LOCATION} | i64 |
| overloading.rs:441:13:441:16 | self | | {EXTERNAL LOCATION} | & |
| overloading.rs:441:13:441:16 | self | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:441:13:441:16 | self | TRef.T | {EXTERNAL LOCATION} | i64 |
| overloading.rs:445:16:445:20 | SelfParam | | {EXTERNAL LOCATION} | & |
| overloading.rs:445:16:445:20 | SelfParam | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:445:16:445:20 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i64 |
| overloading.rs:445:23:449:9 | { ... } | | {EXTERNAL LOCATION} | () |
| overloading.rs:447:13:447:31 | ...::bar(...) | | {EXTERNAL LOCATION} | () |
| overloading.rs:447:27:447:30 | self | | {EXTERNAL LOCATION} | & |
| overloading.rs:447:27:447:30 | self | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:447:27:447:30 | self | TRef.T | {EXTERNAL LOCATION} | i64 |
| overloading.rs:448:13:448:16 | self | | {EXTERNAL LOCATION} | & |
| overloading.rs:448:13:448:16 | self | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:448:13:448:16 | self | TRef.T | {EXTERNAL LOCATION} | i64 |
| pattern_matching.rs:13:26:133:1 | { ... } | | {EXTERNAL LOCATION} | Option |
| pattern_matching.rs:13:26:133:1 | { ... } | T | {EXTERNAL LOCATION} | () |
| pattern_matching.rs:15:5:18:5 | if ... {...} | | {EXTERNAL LOCATION} | () |
@@ -4960,6 +5027,17 @@ inferCertainType
| regressions.rs:67:29:67:33 | other | TRef | regressions.rs:41:5:42:14 | S2 |
| regressions.rs:71:14:75:5 | { ... } | | {EXTERNAL LOCATION} | () |
| regressions.rs:74:22:74:24 | &s2 | | {EXTERNAL LOCATION} | & |
| regressions.rs:82:20:82:24 | value | | regressions.rs:81:18:81:18 | T |
| regressions.rs:86:20:86:20 | s | | regressions.rs:85:10:85:10 | T |
| regressions.rs:86:34:88:9 | { ... } | | regressions.rs:85:10:85:10 | T |
| regressions.rs:87:13:87:13 | s | | regressions.rs:85:10:85:10 | T |
| regressions.rs:92:20:92:22 | val | | regressions.rs:91:10:91:10 | T |
| regressions.rs:92:41:94:9 | { ... } | | {EXTERNAL LOCATION} | Option |
| regressions.rs:92:41:94:9 | { ... } | T | regressions.rs:91:10:91:10 | T |
| regressions.rs:93:18:93:20 | val | | regressions.rs:91:10:91:10 | T |
| regressions.rs:99:22:99:22 | x | | regressions.rs:99:18:99:19 | T2 |
| regressions.rs:103:5:107:5 | { ... } | | regressions.rs:99:18:99:19 | T2 |
| regressions.rs:104:33:104:33 | x | | regressions.rs:99:18:99:19 | T2 |
inferType
| associated_types.rs:5:15:5:18 | SelfParam | | associated_types.rs:1:1:2:21 | Wrapper |
| associated_types.rs:5:15:5:18 | SelfParam | A | associated_types.rs:4:6:4:6 | A |
@@ -11976,249 +12054,258 @@ inferType
| main.rs:2634:9:2634:9 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2643:14:2643:17 | SelfParam | | main.rs:2639:5:2640:13 | S |
| main.rs:2643:20:2643:21 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2646:16:2696:5 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2647:13:2647:13 | x | | {EXTERNAL LOCATION} | Option |
| main.rs:2647:13:2647:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2647:17:2647:20 | None | | {EXTERNAL LOCATION} | Option |
| main.rs:2647:17:2647:20 | None | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2648:13:2648:13 | x | | {EXTERNAL LOCATION} | Option |
| main.rs:2648:13:2648:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2648:30:2648:30 | x | | {EXTERNAL LOCATION} | Option |
| main.rs:2648:30:2648:30 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2649:13:2649:13 | x | | {EXTERNAL LOCATION} | Option |
| main.rs:2649:13:2649:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2649:17:2649:35 | ...::None | | {EXTERNAL LOCATION} | Option |
| main.rs:2649:17:2649:35 | ...::None | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2650:13:2650:13 | x | | {EXTERNAL LOCATION} | Option |
| main.rs:2650:13:2650:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2650:17:2650:35 | ...::None::<...> | | {EXTERNAL LOCATION} | Option |
| main.rs:2650:17:2650:35 | ...::None::<...> | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2652:26:2652:28 | opt | | {EXTERNAL LOCATION} | Option |
| main.rs:2652:26:2652:28 | opt | T | main.rs:2652:23:2652:23 | T |
| main.rs:2652:42:2652:42 | x | | main.rs:2652:23:2652:23 | T |
| main.rs:2652:48:2652:49 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2646:41:2648:5 | { ... } | | main.rs:2646:22:2646:31 | T |
| main.rs:2647:9:2647:26 | ...::default(...) | | main.rs:2646:22:2646:31 | T |
| main.rs:2650:16:2703:5 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2651:13:2651:13 | x | | {EXTERNAL LOCATION} | Option |
| main.rs:2651:13:2651:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2651:17:2651:20 | None | | {EXTERNAL LOCATION} | Option |
| main.rs:2651:17:2651:20 | None | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2652:13:2652:13 | x | | {EXTERNAL LOCATION} | Option |
| main.rs:2652:13:2652:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2652:30:2652:30 | x | | {EXTERNAL LOCATION} | Option |
| main.rs:2652:30:2652:30 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2653:13:2653:13 | x | | {EXTERNAL LOCATION} | Option |
| main.rs:2653:13:2653:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2653:17:2653:35 | ...::None | | {EXTERNAL LOCATION} | Option |
| main.rs:2653:17:2653:35 | ...::None | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2654:13:2654:13 | x | | {EXTERNAL LOCATION} | Option |
| main.rs:2654:13:2654:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2654:17:2654:20 | None | | {EXTERNAL LOCATION} | Option |
| main.rs:2654:17:2654:20 | None | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2655:9:2655:24 | pin_option(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2655:20:2655:20 | x | | {EXTERNAL LOCATION} | Option |
| main.rs:2655:20:2655:20 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2655:23:2655:23 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2662:13:2662:13 | x | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2662:13:2662:13 | x | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2662:13:2662:13 | x | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2662:17:2662:39 | ...::A {...} | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2662:17:2662:39 | ...::A {...} | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2662:17:2662:39 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2662:37:2662:37 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2663:13:2663:13 | x | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2663:13:2663:13 | x | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2663:13:2663:13 | x | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2663:40:2663:40 | x | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2663:40:2663:40 | x | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2663:40:2663:40 | x | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2664:13:2664:13 | x | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2664:13:2664:13 | x | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2664:13:2664:13 | x | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2664:17:2664:52 | ...::A {...} | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2664:17:2664:52 | ...::A {...} | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2664:17:2664:52 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2664:50:2664:50 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2666:13:2666:13 | x | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2654:17:2654:35 | ...::None::<...> | | {EXTERNAL LOCATION} | Option |
| main.rs:2654:17:2654:35 | ...::None::<...> | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2656:26:2656:28 | opt | | {EXTERNAL LOCATION} | Option |
| main.rs:2656:26:2656:28 | opt | T | main.rs:2656:23:2656:23 | T |
| main.rs:2656:42:2656:42 | x | | main.rs:2656:23:2656:23 | T |
| main.rs:2656:48:2656:49 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2658:13:2658:13 | x | | {EXTERNAL LOCATION} | Option |
| main.rs:2658:13:2658:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2658:17:2658:20 | None | | {EXTERNAL LOCATION} | Option |
| main.rs:2658:17:2658:20 | None | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2659:9:2659:24 | pin_option(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2659:20:2659:20 | x | | {EXTERNAL LOCATION} | Option |
| main.rs:2659:20:2659:20 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2659:23:2659:23 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2666:13:2666:13 | x | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2666:13:2666:13 | x | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2666:13:2666:13 | x | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2666:17:2668:9 | ...::B::<...> {...} | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2666:17:2668:9 | ...::B::<...> {...} | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2666:17:2668:9 | ...::B::<...> {...} | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2667:20:2667:32 | ...::new(...) | | {EXTERNAL LOCATION} | String |
| main.rs:2670:29:2670:29 | e | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2670:29:2670:29 | e | T1 | main.rs:2670:26:2670:26 | T |
| main.rs:2670:29:2670:29 | e | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2670:53:2670:53 | x | | main.rs:2670:26:2670:26 | T |
| main.rs:2670:59:2670:60 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2673:13:2673:13 | x | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2673:13:2673:13 | x | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2673:13:2673:13 | x | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2673:17:2675:9 | ...::B {...} | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2673:17:2675:9 | ...::B {...} | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2673:17:2675:9 | ...::B {...} | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2674:20:2674:32 | ...::new(...) | | {EXTERNAL LOCATION} | String |
| main.rs:2676:9:2676:27 | pin_my_either(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2676:23:2676:23 | x | | main.rs:2657:9:2660:9 | MyEither |
| main.rs:2676:23:2676:23 | x | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2676:23:2676:23 | x | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2676:26:2676:26 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2678:13:2678:13 | x | | {EXTERNAL LOCATION} | Result |
| main.rs:2678:13:2678:13 | x | E | {EXTERNAL LOCATION} | String |
| main.rs:2678:13:2678:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2678:17:2678:29 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result |
| main.rs:2678:17:2678:29 | ...::Ok(...) | E | {EXTERNAL LOCATION} | String |
| main.rs:2678:17:2678:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2678:28:2678:28 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2679:13:2679:13 | x | | {EXTERNAL LOCATION} | Result |
| main.rs:2679:13:2679:13 | x | E | {EXTERNAL LOCATION} | String |
| main.rs:2679:13:2679:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2679:38:2679:38 | x | | {EXTERNAL LOCATION} | Result |
| main.rs:2679:38:2679:38 | x | E | {EXTERNAL LOCATION} | String |
| main.rs:2679:38:2679:38 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2680:13:2680:13 | x | | {EXTERNAL LOCATION} | Result |
| main.rs:2680:13:2680:13 | x | E | {EXTERNAL LOCATION} | String |
| main.rs:2680:13:2680:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2680:17:2680:44 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result |
| main.rs:2680:17:2680:44 | ...::Ok(...) | E | {EXTERNAL LOCATION} | String |
| main.rs:2680:17:2680:44 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2680:43:2680:43 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2681:13:2681:13 | x | | {EXTERNAL LOCATION} | Result |
| main.rs:2681:13:2681:13 | x | E | {EXTERNAL LOCATION} | String |
| main.rs:2681:13:2681:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2681:17:2681:44 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result |
| main.rs:2681:17:2681:44 | ...::Ok::<...>(...) | E | {EXTERNAL LOCATION} | String |
| main.rs:2681:17:2681:44 | ...::Ok::<...>(...) | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2681:43:2681:43 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2683:29:2683:31 | res | | {EXTERNAL LOCATION} | Result |
| main.rs:2683:29:2683:31 | res | E | main.rs:2683:26:2683:26 | E |
| main.rs:2683:29:2683:31 | res | T | main.rs:2683:23:2683:23 | T |
| main.rs:2683:48:2683:48 | x | | main.rs:2683:26:2683:26 | E |
| main.rs:2683:54:2683:55 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2666:17:2666:39 | ...::A {...} | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2666:17:2666:39 | ...::A {...} | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2666:17:2666:39 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2666:37:2666:37 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2667:13:2667:13 | x | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2667:13:2667:13 | x | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2667:13:2667:13 | x | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2667:40:2667:40 | x | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2667:40:2667:40 | x | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2667:40:2667:40 | x | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2668:13:2668:13 | x | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2668:13:2668:13 | x | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2668:13:2668:13 | x | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2668:17:2668:52 | ...::A {...} | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2668:17:2668:52 | ...::A {...} | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2668:17:2668:52 | ...::A {...} | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2668:50:2668:50 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2670:13:2670:13 | x | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2670:13:2670:13 | x | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2670:13:2670:13 | x | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2670:17:2672:9 | ...::B::<...> {...} | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2670:17:2672:9 | ...::B::<...> {...} | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2670:17:2672:9 | ...::B::<...> {...} | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2671:20:2671:32 | ...::new(...) | | {EXTERNAL LOCATION} | String |
| main.rs:2674:29:2674:29 | e | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2674:29:2674:29 | e | T1 | main.rs:2674:26:2674:26 | T |
| main.rs:2674:29:2674:29 | e | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2674:53:2674:53 | x | | main.rs:2674:26:2674:26 | T |
| main.rs:2674:59:2674:60 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2677:13:2677:13 | x | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2677:13:2677:13 | x | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2677:13:2677:13 | x | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2677:17:2679:9 | ...::B {...} | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2677:17:2679:9 | ...::B {...} | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2677:17:2679:9 | ...::B {...} | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2678:20:2678:32 | ...::new(...) | | {EXTERNAL LOCATION} | String |
| main.rs:2680:9:2680:27 | pin_my_either(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2680:23:2680:23 | x | | main.rs:2661:9:2664:9 | MyEither |
| main.rs:2680:23:2680:23 | x | T1 | {EXTERNAL LOCATION} | i32 |
| main.rs:2680:23:2680:23 | x | T2 | {EXTERNAL LOCATION} | String |
| main.rs:2680:26:2680:26 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2682:13:2682:13 | x | | {EXTERNAL LOCATION} | Result |
| main.rs:2682:13:2682:13 | x | E | {EXTERNAL LOCATION} | String |
| main.rs:2682:13:2682:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2682:17:2682:29 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result |
| main.rs:2682:17:2682:29 | ...::Ok(...) | E | {EXTERNAL LOCATION} | String |
| main.rs:2682:17:2682:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2682:28:2682:28 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2683:13:2683:13 | x | | {EXTERNAL LOCATION} | Result |
| main.rs:2683:13:2683:13 | x | E | {EXTERNAL LOCATION} | String |
| main.rs:2683:13:2683:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2683:38:2683:38 | x | | {EXTERNAL LOCATION} | Result |
| main.rs:2683:38:2683:38 | x | E | {EXTERNAL LOCATION} | String |
| main.rs:2683:38:2683:38 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2684:13:2684:13 | x | | {EXTERNAL LOCATION} | Result |
| main.rs:2684:13:2684:13 | x | E | {EXTERNAL LOCATION} | String |
| main.rs:2684:13:2684:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2684:17:2684:44 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result |
| main.rs:2684:17:2684:44 | ...::Ok(...) | E | {EXTERNAL LOCATION} | String |
| main.rs:2684:17:2684:44 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2684:43:2684:43 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2685:13:2685:13 | x | | {EXTERNAL LOCATION} | Result |
| main.rs:2685:13:2685:13 | x | E | {EXTERNAL LOCATION} | bool |
| main.rs:2685:13:2685:13 | x | E | {EXTERNAL LOCATION} | String |
| main.rs:2685:13:2685:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2685:17:2685:29 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result |
| main.rs:2685:17:2685:29 | ...::Ok(...) | E | {EXTERNAL LOCATION} | bool |
| main.rs:2685:17:2685:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2685:28:2685:28 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2686:9:2686:28 | pin_result(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2686:20:2686:20 | x | | {EXTERNAL LOCATION} | Result |
| main.rs:2686:20:2686:20 | x | E | {EXTERNAL LOCATION} | bool |
| main.rs:2686:20:2686:20 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2686:23:2686:27 | false | | {EXTERNAL LOCATION} | bool |
| main.rs:2688:17:2688:17 | x | | {EXTERNAL LOCATION} | Vec |
| main.rs:2688:17:2688:17 | x | A | {EXTERNAL LOCATION} | Global |
| main.rs:2688:17:2688:17 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2688:21:2688:30 | ...::new(...) | | {EXTERNAL LOCATION} | Vec |
| main.rs:2688:21:2688:30 | ...::new(...) | A | {EXTERNAL LOCATION} | Global |
| main.rs:2688:21:2688:30 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2689:9:2689:9 | x | | {EXTERNAL LOCATION} | Vec |
| main.rs:2689:9:2689:9 | x | A | {EXTERNAL LOCATION} | Global |
| main.rs:2689:9:2689:9 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2689:9:2689:17 | x.push(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2689:16:2689:16 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2691:13:2691:13 | y | | {EXTERNAL LOCATION} | i32 |
| main.rs:2691:17:2691:34 | ...::default(...) | | {EXTERNAL LOCATION} | i32 |
| main.rs:2692:9:2692:9 | x | | {EXTERNAL LOCATION} | Vec |
| main.rs:2692:9:2692:9 | x | A | {EXTERNAL LOCATION} | Global |
| main.rs:2692:9:2692:9 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2692:9:2692:17 | x.push(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2692:16:2692:16 | y | | {EXTERNAL LOCATION} | i32 |
| main.rs:2694:13:2694:13 | s | | main.rs:2639:5:2640:13 | S |
| main.rs:2694:17:2694:34 | ...::default(...) | | main.rs:2639:5:2640:13 | S |
| main.rs:2695:9:2695:15 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2695:14:2695:14 | s | | main.rs:2639:5:2640:13 | S |
| main.rs:2702:14:2702:17 | SelfParam | | main.rs:2700:5:2708:5 | Self [trait MyTrait] |
| main.rs:2705:14:2705:18 | SelfParam | | {EXTERNAL LOCATION} | & |
| main.rs:2705:14:2705:18 | SelfParam | TRef | main.rs:2700:5:2708:5 | Self [trait MyTrait] |
| main.rs:2705:21:2705:25 | other | | {EXTERNAL LOCATION} | & |
| main.rs:2705:21:2705:25 | other | TRef | main.rs:2700:5:2708:5 | Self [trait MyTrait] |
| main.rs:2705:44:2707:9 | { ... } | | {EXTERNAL LOCATION} | & |
| main.rs:2705:44:2707:9 | { ... } | TRef | main.rs:2700:5:2708:5 | Self [trait MyTrait] |
| main.rs:2706:13:2706:16 | self | | {EXTERNAL LOCATION} | & |
| main.rs:2706:13:2706:16 | self | TRef | main.rs:2700:5:2708:5 | Self [trait MyTrait] |
| main.rs:2706:13:2706:20 | self.f() | | {EXTERNAL LOCATION} | & |
| main.rs:2706:13:2706:20 | self.f() | TRef | main.rs:2700:5:2708:5 | Self [trait MyTrait] |
| main.rs:2712:14:2712:17 | SelfParam | | {EXTERNAL LOCATION} | i32 |
| main.rs:2712:28:2714:9 | { ... } | | {EXTERNAL LOCATION} | i32 |
| main.rs:2713:13:2713:16 | self | | {EXTERNAL LOCATION} | i32 |
| main.rs:2719:14:2719:17 | SelfParam | | {EXTERNAL LOCATION} | usize |
| main.rs:2719:28:2721:9 | { ... } | | {EXTERNAL LOCATION} | usize |
| main.rs:2720:13:2720:16 | self | | {EXTERNAL LOCATION} | usize |
| main.rs:2726:14:2726:17 | SelfParam | | {EXTERNAL LOCATION} | & |
| main.rs:2726:14:2726:17 | SelfParam | TRef | main.rs:2724:10:2724:10 | T |
| main.rs:2726:28:2728:9 | { ... } | | {EXTERNAL LOCATION} | & |
| main.rs:2726:28:2728:9 | { ... } | TRef | main.rs:2724:10:2724:10 | T |
| main.rs:2727:13:2727:16 | self | | {EXTERNAL LOCATION} | & |
| main.rs:2727:13:2727:16 | self | TRef | main.rs:2724:10:2724:10 | T |
| main.rs:2731:25:2735:5 | { ... } | | {EXTERNAL LOCATION} | usize |
| main.rs:2732:17:2732:17 | x | | {EXTERNAL LOCATION} | i32 |
| main.rs:2732:17:2732:17 | x | | {EXTERNAL LOCATION} | usize |
| main.rs:2732:21:2732:21 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2732:21:2732:21 | 0 | | {EXTERNAL LOCATION} | usize |
| main.rs:2733:9:2733:9 | x | | {EXTERNAL LOCATION} | i32 |
| main.rs:2733:9:2733:9 | x | | {EXTERNAL LOCATION} | usize |
| main.rs:2733:9:2733:17 | ... = ... | | {EXTERNAL LOCATION} | () |
| main.rs:2733:13:2733:13 | x | | {EXTERNAL LOCATION} | i32 |
| main.rs:2733:13:2733:13 | x | | {EXTERNAL LOCATION} | usize |
| main.rs:2733:13:2733:17 | x.f() | | {EXTERNAL LOCATION} | i32 |
| main.rs:2733:13:2733:17 | x.f() | | {EXTERNAL LOCATION} | usize |
| main.rs:2734:9:2734:9 | x | | {EXTERNAL LOCATION} | i32 |
| main.rs:2734:9:2734:9 | x | | {EXTERNAL LOCATION} | usize |
| main.rs:2737:12:2745:5 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2738:13:2738:13 | x | | {EXTERNAL LOCATION} | usize |
| main.rs:2738:24:2738:24 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2738:24:2738:24 | 0 | | {EXTERNAL LOCATION} | usize |
| main.rs:2739:13:2739:13 | y | | {EXTERNAL LOCATION} | & |
| main.rs:2739:13:2739:13 | y | TRef | {EXTERNAL LOCATION} | i32 |
| main.rs:2739:17:2739:18 | &1 | | {EXTERNAL LOCATION} | & |
| main.rs:2739:17:2739:18 | &1 | TRef | {EXTERNAL LOCATION} | i32 |
| main.rs:2739:18:2739:18 | 1 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2740:13:2740:13 | z | | {EXTERNAL LOCATION} | & |
| main.rs:2740:13:2740:13 | z | TRef | {EXTERNAL LOCATION} | usize |
| main.rs:2740:17:2740:17 | x | | {EXTERNAL LOCATION} | usize |
| main.rs:2740:17:2740:22 | x.g(...) | | {EXTERNAL LOCATION} | & |
| main.rs:2740:17:2740:22 | x.g(...) | TRef | {EXTERNAL LOCATION} | usize |
| main.rs:2740:21:2740:21 | y | | {EXTERNAL LOCATION} | & |
| main.rs:2740:21:2740:21 | y | TRef | {EXTERNAL LOCATION} | i32 |
| main.rs:2742:13:2742:13 | x | | {EXTERNAL LOCATION} | i32 |
| main.rs:2742:17:2742:17 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2743:13:2743:13 | y | | {EXTERNAL LOCATION} | usize |
| main.rs:2743:24:2743:24 | 1 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2743:24:2743:24 | 1 | | {EXTERNAL LOCATION} | usize |
| main.rs:2744:13:2744:13 | z | | {EXTERNAL LOCATION} | i32 |
| main.rs:2744:17:2744:17 | x | | {EXTERNAL LOCATION} | i32 |
| main.rs:2744:17:2744:24 | x.max(...) | | {EXTERNAL LOCATION} | i32 |
| main.rs:2744:23:2744:23 | y | | {EXTERNAL LOCATION} | usize |
| main.rs:2755:11:2790:1 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2756:5:2756:21 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2757:5:2757:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo |
| main.rs:2758:5:2758:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo |
| main.rs:2758:20:2758:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
| main.rs:2758:41:2758:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
| main.rs:2759:5:2759:35 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2760:5:2760:41 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2761:5:2761:45 | ...::test(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2762:5:2762:30 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2685:17:2685:44 | ...::Ok::<...>(...) | | {EXTERNAL LOCATION} | Result |
| main.rs:2685:17:2685:44 | ...::Ok::<...>(...) | E | {EXTERNAL LOCATION} | String |
| main.rs:2685:17:2685:44 | ...::Ok::<...>(...) | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2685:43:2685:43 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2687:29:2687:31 | res | | {EXTERNAL LOCATION} | Result |
| main.rs:2687:29:2687:31 | res | E | main.rs:2687:26:2687:26 | E |
| main.rs:2687:29:2687:31 | res | T | main.rs:2687:23:2687:23 | T |
| main.rs:2687:48:2687:48 | x | | main.rs:2687:26:2687:26 | E |
| main.rs:2687:54:2687:55 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2689:13:2689:13 | x | | {EXTERNAL LOCATION} | Result |
| main.rs:2689:13:2689:13 | x | E | {EXTERNAL LOCATION} | bool |
| main.rs:2689:13:2689:13 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2689:17:2689:29 | ...::Ok(...) | | {EXTERNAL LOCATION} | Result |
| main.rs:2689:17:2689:29 | ...::Ok(...) | E | {EXTERNAL LOCATION} | bool |
| main.rs:2689:17:2689:29 | ...::Ok(...) | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2689:28:2689:28 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2690:9:2690:28 | pin_result(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2690:20:2690:20 | x | | {EXTERNAL LOCATION} | Result |
| main.rs:2690:20:2690:20 | x | E | {EXTERNAL LOCATION} | bool |
| main.rs:2690:20:2690:20 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2690:23:2690:27 | false | | {EXTERNAL LOCATION} | bool |
| main.rs:2692:17:2692:17 | x | | {EXTERNAL LOCATION} | Vec |
| main.rs:2692:17:2692:17 | x | A | {EXTERNAL LOCATION} | Global |
| main.rs:2692:17:2692:17 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2692:21:2692:30 | ...::new(...) | | {EXTERNAL LOCATION} | Vec |
| main.rs:2692:21:2692:30 | ...::new(...) | A | {EXTERNAL LOCATION} | Global |
| main.rs:2692:21:2692:30 | ...::new(...) | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2693:9:2693:9 | x | | {EXTERNAL LOCATION} | Vec |
| main.rs:2693:9:2693:9 | x | A | {EXTERNAL LOCATION} | Global |
| main.rs:2693:9:2693:9 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2693:9:2693:17 | x.push(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2693:16:2693:16 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2695:13:2695:13 | y | | {EXTERNAL LOCATION} | i32 |
| main.rs:2695:17:2695:34 | ...::default(...) | | {EXTERNAL LOCATION} | i32 |
| main.rs:2696:9:2696:9 | x | | {EXTERNAL LOCATION} | Vec |
| main.rs:2696:9:2696:9 | x | A | {EXTERNAL LOCATION} | Global |
| main.rs:2696:9:2696:9 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2696:9:2696:17 | x.push(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2696:16:2696:16 | y | | {EXTERNAL LOCATION} | i32 |
| main.rs:2698:13:2698:13 | s | | main.rs:2639:5:2640:13 | S |
| main.rs:2698:17:2698:34 | ...::default(...) | | main.rs:2639:5:2640:13 | S |
| main.rs:2699:9:2699:15 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2699:14:2699:14 | s | | main.rs:2639:5:2640:13 | S |
| main.rs:2701:13:2701:13 | z | | {EXTERNAL LOCATION} | i32 |
| main.rs:2701:17:2701:31 | free_function(...) | | {EXTERNAL LOCATION} | i32 |
| main.rs:2702:9:2702:9 | x | | {EXTERNAL LOCATION} | Vec |
| main.rs:2702:9:2702:9 | x | A | {EXTERNAL LOCATION} | Global |
| main.rs:2702:9:2702:9 | x | T | {EXTERNAL LOCATION} | i32 |
| main.rs:2702:9:2702:17 | x.push(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2702:16:2702:16 | z | | {EXTERNAL LOCATION} | i32 |
| main.rs:2709:14:2709:17 | SelfParam | | main.rs:2707:5:2715:5 | Self [trait MyTrait] |
| main.rs:2712:14:2712:18 | SelfParam | | {EXTERNAL LOCATION} | & |
| main.rs:2712:14:2712:18 | SelfParam | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] |
| main.rs:2712:21:2712:25 | other | | {EXTERNAL LOCATION} | & |
| main.rs:2712:21:2712:25 | other | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] |
| main.rs:2712:44:2714:9 | { ... } | | {EXTERNAL LOCATION} | & |
| main.rs:2712:44:2714:9 | { ... } | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] |
| main.rs:2713:13:2713:16 | self | | {EXTERNAL LOCATION} | & |
| main.rs:2713:13:2713:16 | self | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] |
| main.rs:2713:13:2713:20 | self.f() | | {EXTERNAL LOCATION} | & |
| main.rs:2713:13:2713:20 | self.f() | TRef | main.rs:2707:5:2715:5 | Self [trait MyTrait] |
| main.rs:2719:14:2719:17 | SelfParam | | {EXTERNAL LOCATION} | i32 |
| main.rs:2719:28:2721:9 | { ... } | | {EXTERNAL LOCATION} | i32 |
| main.rs:2720:13:2720:16 | self | | {EXTERNAL LOCATION} | i32 |
| main.rs:2726:14:2726:17 | SelfParam | | {EXTERNAL LOCATION} | usize |
| main.rs:2726:28:2728:9 | { ... } | | {EXTERNAL LOCATION} | usize |
| main.rs:2727:13:2727:16 | self | | {EXTERNAL LOCATION} | usize |
| main.rs:2733:14:2733:17 | SelfParam | | {EXTERNAL LOCATION} | & |
| main.rs:2733:14:2733:17 | SelfParam | TRef | main.rs:2731:10:2731:10 | T |
| main.rs:2733:28:2735:9 | { ... } | | {EXTERNAL LOCATION} | & |
| main.rs:2733:28:2735:9 | { ... } | TRef | main.rs:2731:10:2731:10 | T |
| main.rs:2734:13:2734:16 | self | | {EXTERNAL LOCATION} | & |
| main.rs:2734:13:2734:16 | self | TRef | main.rs:2731:10:2731:10 | T |
| main.rs:2738:25:2742:5 | { ... } | | {EXTERNAL LOCATION} | usize |
| main.rs:2739:17:2739:17 | x | | {EXTERNAL LOCATION} | i32 |
| main.rs:2739:17:2739:17 | x | | {EXTERNAL LOCATION} | usize |
| main.rs:2739:21:2739:21 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2739:21:2739:21 | 0 | | {EXTERNAL LOCATION} | usize |
| main.rs:2740:9:2740:9 | x | | {EXTERNAL LOCATION} | i32 |
| main.rs:2740:9:2740:9 | x | | {EXTERNAL LOCATION} | usize |
| main.rs:2740:9:2740:17 | ... = ... | | {EXTERNAL LOCATION} | () |
| main.rs:2740:13:2740:13 | x | | {EXTERNAL LOCATION} | i32 |
| main.rs:2740:13:2740:13 | x | | {EXTERNAL LOCATION} | usize |
| main.rs:2740:13:2740:17 | x.f() | | {EXTERNAL LOCATION} | i32 |
| main.rs:2740:13:2740:17 | x.f() | | {EXTERNAL LOCATION} | usize |
| main.rs:2741:9:2741:9 | x | | {EXTERNAL LOCATION} | i32 |
| main.rs:2741:9:2741:9 | x | | {EXTERNAL LOCATION} | usize |
| main.rs:2744:12:2752:5 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2745:13:2745:13 | x | | {EXTERNAL LOCATION} | usize |
| main.rs:2745:24:2745:24 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2745:24:2745:24 | 0 | | {EXTERNAL LOCATION} | usize |
| main.rs:2746:13:2746:13 | y | | {EXTERNAL LOCATION} | & |
| main.rs:2746:13:2746:13 | y | TRef | {EXTERNAL LOCATION} | i32 |
| main.rs:2746:17:2746:18 | &1 | | {EXTERNAL LOCATION} | & |
| main.rs:2746:17:2746:18 | &1 | TRef | {EXTERNAL LOCATION} | i32 |
| main.rs:2746:18:2746:18 | 1 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2747:13:2747:13 | z | | {EXTERNAL LOCATION} | & |
| main.rs:2747:13:2747:13 | z | TRef | {EXTERNAL LOCATION} | usize |
| main.rs:2747:17:2747:17 | x | | {EXTERNAL LOCATION} | usize |
| main.rs:2747:17:2747:22 | x.g(...) | | {EXTERNAL LOCATION} | & |
| main.rs:2747:17:2747:22 | x.g(...) | TRef | {EXTERNAL LOCATION} | usize |
| main.rs:2747:21:2747:21 | y | | {EXTERNAL LOCATION} | & |
| main.rs:2747:21:2747:21 | y | TRef | {EXTERNAL LOCATION} | i32 |
| main.rs:2749:13:2749:13 | x | | {EXTERNAL LOCATION} | i32 |
| main.rs:2749:17:2749:17 | 0 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2750:13:2750:13 | y | | {EXTERNAL LOCATION} | usize |
| main.rs:2750:24:2750:24 | 1 | | {EXTERNAL LOCATION} | i32 |
| main.rs:2750:24:2750:24 | 1 | | {EXTERNAL LOCATION} | usize |
| main.rs:2751:13:2751:13 | z | | {EXTERNAL LOCATION} | i32 |
| main.rs:2751:17:2751:17 | x | | {EXTERNAL LOCATION} | i32 |
| main.rs:2751:17:2751:24 | x.max(...) | | {EXTERNAL LOCATION} | i32 |
| main.rs:2751:23:2751:23 | y | | {EXTERNAL LOCATION} | usize |
| main.rs:2762:11:2797:1 | { ... } | | {EXTERNAL LOCATION} | () |
| main.rs:2763:5:2763:21 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2764:5:2764:27 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2765:5:2765:32 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2766:5:2766:23 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2767:5:2767:36 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2768:5:2768:35 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2769:5:2769:29 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2770:5:2770:23 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2771:5:2771:24 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2772:5:2772:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2773:5:2773:18 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2774:5:2774:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future |
| main.rs:2774:5:2774:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () |
| main.rs:2775:5:2775:19 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2776:5:2776:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2777:5:2777:14 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2778:5:2778:27 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2779:5:2779:15 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2780:5:2780:43 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2781:5:2781:15 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2782:5:2782:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2783:5:2783:28 | ...::test(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2784:5:2784:23 | ...::test(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2785:5:2785:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2786:5:2786:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2787:5:2787:20 | ...::test(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2788:5:2788:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box |
| main.rs:2788:5:2788:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global |
| main.rs:2788:5:2788:20 | ...::f(...) | T | main.rs:2547:5:2549:5 | dyn MyTrait |
| main.rs:2788:5:2788:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 |
| main.rs:2788:16:2788:19 | true | | {EXTERNAL LOCATION} | bool |
| main.rs:2789:5:2789:23 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2764:5:2764:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo |
| main.rs:2765:5:2765:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo |
| main.rs:2765:20:2765:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
| main.rs:2765:41:2765:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
| main.rs:2766:5:2766:35 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2767:5:2767:41 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2768:5:2768:45 | ...::test(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2769:5:2769:30 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2770:5:2770:21 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2771:5:2771:27 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2772:5:2772:32 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2773:5:2773:23 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2774:5:2774:36 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2775:5:2775:35 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2776:5:2776:29 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2777:5:2777:23 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2778:5:2778:24 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2779:5:2779:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2780:5:2780:18 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2781:5:2781:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future |
| main.rs:2781:5:2781:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () |
| main.rs:2782:5:2782:19 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2783:5:2783:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2784:5:2784:14 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2785:5:2785:27 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2786:5:2786:15 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2787:5:2787:43 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2788:5:2788:15 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2789:5:2789:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2790:5:2790:28 | ...::test(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2791:5:2791:23 | ...::test(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2792:5:2792:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2793:5:2793:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2794:5:2794:20 | ...::test(...) | | {EXTERNAL LOCATION} | () |
| main.rs:2795:5:2795:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box |
| main.rs:2795:5:2795:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global |
| main.rs:2795:5:2795:20 | ...::f(...) | T | main.rs:2547:5:2549:5 | dyn MyTrait |
| main.rs:2795:5:2795:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 |
| main.rs:2795:16:2795:19 | true | | {EXTERNAL LOCATION} | bool |
| main.rs:2796:5:2796:23 | ...::f(...) | | {EXTERNAL LOCATION} | () |
| overloading.rs:4:19:4:23 | SelfParam | | {EXTERNAL LOCATION} | & |
| overloading.rs:4:19:4:23 | SelfParam | TRef | overloading.rs:2:5:11:5 | Self [trait FirstTrait] |
| overloading.rs:4:34:6:9 | { ... } | | {EXTERNAL LOCATION} | bool |
@@ -12675,6 +12762,74 @@ inferType
| overloading.rs:399:17:399:29 | ...::from(...) | | overloading.rs:372:5:372:14 | S1 |
| overloading.rs:399:28:399:28 | s | | overloading.rs:364:5:365:13 | S |
| overloading.rs:400:9:400:9 | x | | overloading.rs:372:5:372:14 | S1 |
| overloading.rs:408:16:408:20 | SelfParam | | {EXTERNAL LOCATION} | & |
| overloading.rs:408:16:408:20 | SelfParam | TRef | overloading.rs:407:5:410:5 | Self [trait Trait] |
| overloading.rs:409:16:409:20 | SelfParam | | {EXTERNAL LOCATION} | & |
| overloading.rs:409:16:409:20 | SelfParam | TRef | overloading.rs:407:5:410:5 | Self [trait Trait] |
| overloading.rs:414:16:414:16 | x | | {EXTERNAL LOCATION} | & |
| overloading.rs:414:16:414:16 | x | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:414:16:414:16 | x | TRef.T | {EXTERNAL LOCATION} | i32 |
| overloading.rs:414:26:414:27 | { ... } | | {EXTERNAL LOCATION} | () |
| overloading.rs:417:16:417:20 | SelfParam | | {EXTERNAL LOCATION} | & |
| overloading.rs:417:16:417:20 | SelfParam | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:417:16:417:20 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 |
| overloading.rs:417:23:417:24 | { ... } | | {EXTERNAL LOCATION} | () |
| overloading.rs:422:16:422:20 | SelfParam | | {EXTERNAL LOCATION} | & |
| overloading.rs:422:16:422:20 | SelfParam | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:422:16:422:20 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 |
| overloading.rs:422:23:426:9 | { ... } | | {EXTERNAL LOCATION} | () |
| overloading.rs:423:13:423:24 | ...::foo(...) | | {EXTERNAL LOCATION} | () |
| overloading.rs:423:20:423:23 | self | | {EXTERNAL LOCATION} | & |
| overloading.rs:423:20:423:23 | self | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:423:20:423:23 | self | TRef.T | {EXTERNAL LOCATION} | i32 |
| overloading.rs:424:13:424:31 | ...::foo(...) | | {EXTERNAL LOCATION} | () |
| overloading.rs:424:27:424:30 | self | | {EXTERNAL LOCATION} | & |
| overloading.rs:424:27:424:30 | self | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:424:27:424:30 | self | TRef.T | {EXTERNAL LOCATION} | i32 |
| overloading.rs:425:13:425:16 | self | | {EXTERNAL LOCATION} | & |
| overloading.rs:425:13:425:16 | self | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:425:13:425:16 | self | TRef.T | {EXTERNAL LOCATION} | i32 |
| overloading.rs:425:13:425:22 | self.foo() | | {EXTERNAL LOCATION} | () |
| overloading.rs:429:16:429:20 | SelfParam | | {EXTERNAL LOCATION} | & |
| overloading.rs:429:16:429:20 | SelfParam | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:429:16:429:20 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i32 |
| overloading.rs:429:23:433:9 | { ... } | | {EXTERNAL LOCATION} | () |
| overloading.rs:430:13:430:24 | ...::bar(...) | | {EXTERNAL LOCATION} | () |
| overloading.rs:430:20:430:23 | self | | {EXTERNAL LOCATION} | & |
| overloading.rs:430:20:430:23 | self | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:430:20:430:23 | self | TRef.T | {EXTERNAL LOCATION} | i32 |
| overloading.rs:431:13:431:31 | ...::bar(...) | | {EXTERNAL LOCATION} | () |
| overloading.rs:431:27:431:30 | self | | {EXTERNAL LOCATION} | & |
| overloading.rs:431:27:431:30 | self | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:431:27:431:30 | self | TRef.T | {EXTERNAL LOCATION} | i32 |
| overloading.rs:432:13:432:16 | self | | {EXTERNAL LOCATION} | & |
| overloading.rs:432:13:432:16 | self | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:432:13:432:16 | self | TRef.T | {EXTERNAL LOCATION} | i32 |
| overloading.rs:432:13:432:22 | self.bar() | | {EXTERNAL LOCATION} | () |
| overloading.rs:438:16:438:20 | SelfParam | | {EXTERNAL LOCATION} | & |
| overloading.rs:438:16:438:20 | SelfParam | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:438:16:438:20 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i64 |
| overloading.rs:438:23:442:9 | { ... } | | {EXTERNAL LOCATION} | () |
| overloading.rs:440:13:440:31 | ...::foo(...) | | {EXTERNAL LOCATION} | () |
| overloading.rs:440:27:440:30 | self | | {EXTERNAL LOCATION} | & |
| overloading.rs:440:27:440:30 | self | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:440:27:440:30 | self | TRef.T | {EXTERNAL LOCATION} | i64 |
| overloading.rs:441:13:441:16 | self | | {EXTERNAL LOCATION} | & |
| overloading.rs:441:13:441:16 | self | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:441:13:441:16 | self | TRef.T | {EXTERNAL LOCATION} | i64 |
| overloading.rs:441:13:441:22 | self.foo() | | {EXTERNAL LOCATION} | () |
| overloading.rs:445:16:445:20 | SelfParam | | {EXTERNAL LOCATION} | & |
| overloading.rs:445:16:445:20 | SelfParam | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:445:16:445:20 | SelfParam | TRef.T | {EXTERNAL LOCATION} | i64 |
| overloading.rs:445:23:449:9 | { ... } | | {EXTERNAL LOCATION} | () |
| overloading.rs:447:13:447:31 | ...::bar(...) | | {EXTERNAL LOCATION} | () |
| overloading.rs:447:27:447:30 | self | | {EXTERNAL LOCATION} | & |
| overloading.rs:447:27:447:30 | self | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:447:27:447:30 | self | TRef.T | {EXTERNAL LOCATION} | i64 |
| overloading.rs:448:13:448:16 | self | | {EXTERNAL LOCATION} | & |
| overloading.rs:448:13:448:16 | self | TRef | overloading.rs:405:5:405:19 | S |
| overloading.rs:448:13:448:16 | self | TRef.T | {EXTERNAL LOCATION} | i64 |
| overloading.rs:448:13:448:22 | self.bar() | | {EXTERNAL LOCATION} | () |
| pattern_matching.rs:13:26:133:1 | { ... } | | {EXTERNAL LOCATION} | Option |
| pattern_matching.rs:13:26:133:1 | { ... } | T | {EXTERNAL LOCATION} | () |
| pattern_matching.rs:14:9:14:13 | value | | {EXTERNAL LOCATION} | Option |
@@ -14818,4 +14973,29 @@ inferType
| regressions.rs:74:22:74:24 | &s2 | | {EXTERNAL LOCATION} | & |
| regressions.rs:74:22:74:24 | &s2 | TRef | regressions.rs:41:5:42:14 | S2 |
| regressions.rs:74:23:74:24 | s2 | | regressions.rs:41:5:42:14 | S2 |
| regressions.rs:82:20:82:24 | value | | regressions.rs:81:18:81:18 | T |
| regressions.rs:86:20:86:20 | s | | regressions.rs:85:10:85:10 | T |
| regressions.rs:86:34:88:9 | { ... } | | regressions.rs:85:10:85:10 | T |
| regressions.rs:87:13:87:13 | s | | regressions.rs:85:10:85:10 | T |
| regressions.rs:92:20:92:22 | val | | regressions.rs:91:10:91:10 | T |
| regressions.rs:92:41:94:9 | { ... } | | {EXTERNAL LOCATION} | Option |
| regressions.rs:92:41:94:9 | { ... } | T | regressions.rs:91:10:91:10 | T |
| regressions.rs:93:13:93:21 | Some(...) | | {EXTERNAL LOCATION} | Option |
| regressions.rs:93:13:93:21 | Some(...) | T | regressions.rs:91:10:91:10 | T |
| regressions.rs:93:18:93:20 | val | | regressions.rs:91:10:91:10 | T |
| regressions.rs:99:22:99:22 | x | | regressions.rs:99:18:99:19 | T2 |
| regressions.rs:103:5:107:5 | { ... } | | regressions.rs:99:18:99:19 | T2 |
| regressions.rs:104:13:104:13 | y | | {EXTERNAL LOCATION} | Option |
| regressions.rs:104:13:104:13 | y | T | regressions.rs:99:14:99:15 | T1 |
| regressions.rs:104:13:104:13 | y | T | regressions.rs:99:18:99:19 | T2 |
| regressions.rs:104:17:104:34 | ...::my_from(...) | | {EXTERNAL LOCATION} | Option |
| regressions.rs:104:17:104:34 | ...::my_from(...) | T | regressions.rs:99:14:99:15 | T1 |
| regressions.rs:104:17:104:34 | ...::my_from(...) | T | regressions.rs:99:18:99:19 | T2 |
| regressions.rs:104:33:104:33 | x | | regressions.rs:99:18:99:19 | T2 |
| regressions.rs:105:13:105:13 | z | | regressions.rs:99:18:99:19 | T2 |
| regressions.rs:105:17:105:34 | ...::my_from(...) | | regressions.rs:99:18:99:19 | T2 |
| regressions.rs:105:33:105:33 | y | | {EXTERNAL LOCATION} | Option |
| regressions.rs:105:33:105:33 | y | T | regressions.rs:99:14:99:15 | T1 |
| regressions.rs:105:33:105:33 | y | T | regressions.rs:99:18:99:19 | T2 |
| regressions.rs:106:9:106:9 | z | | regressions.rs:99:18:99:19 | T2 |
testFailures

View File

@@ -21,3 +21,9 @@
| test_cipher.rs:109:23:109:56 | ...::new_with_eff_key_len(...) | $@ is broken or weak, and should not be used. | test_cipher.rs:109:23:109:56 | ...::new_with_eff_key_len(...) | The cryptographic algorithm RC2 |
| test_cipher.rs:114:23:114:50 | ...::new(...) | $@ is broken or weak, and should not be used. | test_cipher.rs:114:23:114:50 | ...::new(...) | The cryptographic algorithm RC5 |
| test_cipher.rs:118:23:118:55 | ...::new_from_slice(...) | $@ is broken or weak, and should not be used. | test_cipher.rs:118:23:118:55 | ...::new_from_slice(...) | The cryptographic algorithm RC5 |
| test_cipher.rs:136:23:136:76 | ...::new(...) | $@ is broken or weak, and should not be used. | test_cipher.rs:136:23:136:76 | ...::new(...) | The cryptographic algorithm DES |
| test_cipher.rs:139:23:139:64 | ...::new(...) | $@ is broken or weak, and should not be used. | test_cipher.rs:139:23:139:64 | ...::new(...) | The cryptographic algorithm DES |
| test_cipher.rs:142:23:142:76 | ...::new_from_slices(...) | $@ is broken or weak, and should not be used. | test_cipher.rs:142:23:142:76 | ...::new_from_slices(...) | The cryptographic algorithm DES |
| test_cipher.rs:145:23:145:76 | ...::new(...) | $@ is broken or weak, and should not be used. | test_cipher.rs:145:23:145:76 | ...::new(...) | The cryptographic algorithm DES |
| test_cipher.rs:171:23:171:65 | ...::new(...) | $@ is broken or weak, and should not be used. | test_cipher.rs:171:23:171:65 | ...::new(...) | The cryptographic algorithm DES |
| test_cipher.rs:175:23:175:65 | ...::new(...) | $@ is broken or weak, and should not be used. | test_cipher.rs:175:23:175:65 | ...::new(...) | The cryptographic algorithm RC2 |

View File

@@ -1,2 +0,0 @@
multipleResolvedTargets
| test_cipher.rs:114:23:114:50 | ...::new(...) |

View File

@@ -133,16 +133,16 @@ fn test_cbc(
_ = aes_cipher1.encrypt_padded_mut::<aes::cipher::block_padding::Pkcs7>(data, data_len).unwrap();
// des (broken)
let des_cipher1 = cbc::Encryptor::<des::Des>::new(key.into(), iv.into()); // $ MISSING: Alert[rust/weak-cryptographic-algorithm]
let des_cipher1 = cbc::Encryptor::<des::Des>::new(key.into(), iv.into()); // $ Alert[rust/weak-cryptographic-algorithm]
_ = des_cipher1.encrypt_padded_mut::<des::cipher::block_padding::Pkcs7>(data, data_len).unwrap();
let des_cipher2 = MyDesEncryptor::new(key.into(), iv.into()); // $ MISSING: Alert[rust/weak-cryptographic-algorithm]
let des_cipher2 = MyDesEncryptor::new(key.into(), iv.into()); // $ Alert[rust/weak-cryptographic-algorithm]
_ = des_cipher2.encrypt_padded_mut::<des::cipher::block_padding::Pkcs7>(data, data_len).unwrap();
let des_cipher3 = cbc::Encryptor::<des::Des>::new_from_slices(&key, &iv).unwrap(); // $ MISSING: Alert[rust/weak-cryptographic-algorithm]
let des_cipher3 = cbc::Encryptor::<des::Des>::new_from_slices(&key, &iv).unwrap(); // $ Alert[rust/weak-cryptographic-algorithm]
_ = des_cipher3.encrypt_padded_mut::<des::cipher::block_padding::Pkcs7>(data, data_len).unwrap();
let des_cipher4 = cbc::Encryptor::<des::Des>::new(key.into(), iv.into()); // $ MISSING: Alert[rust/weak-cryptographic-algorithm]
let des_cipher4 = cbc::Encryptor::<des::Des>::new(key.into(), iv.into()); // $ Alert[rust/weak-cryptographic-algorithm]
_ = des_cipher4.encrypt_padded_b2b_mut::<des::cipher::block_padding::Pkcs7>(input, data).unwrap();
}
@@ -168,10 +168,10 @@ fn test_ecb(
_ = aes_cipher4.encrypt_padded_b2b_mut::<aes::cipher::block_padding::Pkcs7>(input, data).unwrap();
// des with ECB (broken cipher + weak block mode)
let des_cipher1 = ecb::Encryptor::<des::Des>::new(key.into()); // $ MISSING: Alert[rust/weak-cryptographic-algorithm]
let des_cipher1 = ecb::Encryptor::<des::Des>::new(key.into()); // $ Alert[rust/weak-cryptographic-algorithm]
_ = des_cipher1.encrypt_padded_mut::<des::cipher::block_padding::Pkcs7>(data, data_len).unwrap();
// rc2 with ECB (broken cipher + weak block mode)
let rc2_cipher1 = ecb::Encryptor::<rc2::Rc2>::new(key.into()); // $ MISSING: Alert[rust/weak-cryptographic-algorithm]
let rc2_cipher1 = ecb::Encryptor::<rc2::Rc2>::new(key.into()); // $ Alert[rust/weak-cryptographic-algorithm]
_ = rc2_cipher1.encrypt_padded_mut::<rc2::cipher::block_padding::Pkcs7>(data, data_len).unwrap();
}

View File

@@ -56,6 +56,9 @@ module Option<TypeWithToString T> {
/** Gets the given element wrapped as an `Option`. */
Some some(T c) { result = TSome(c) }
/** Gets the `None` value. */
None none_() { any() }
}
/**

View File

@@ -0,0 +1,4 @@
---
category: queryMetadata
---
* The `@security-severity` metadata of `swift/unsafe-webview-fetch` has been increased from 6.1 (medium) to 7.8 (high).

View File

@@ -3,7 +3,7 @@
* @description Fetching data in a WebView without restricting the base URL may allow an attacker to access sensitive local data, or enable cross-site scripting attack.
* @kind path-problem
* @problem.severity warning
* @security-severity 6.1
* @security-severity 7.8
* @precision high
* @id swift/unsafe-webview-fetch
* @tags security