mirror of
https://github.com/github/codeql.git
synced 2026-04-26 09:15:12 +02:00
Address review comments
This commit is contained in:
@@ -240,25 +240,28 @@ private module ImplOrTraitItemNodeOption = Option<ImplOrTraitItemNode>;
|
||||
private class ImplOrTraitItemNodeOption = ImplOrTraitItemNodeOption::Option;
|
||||
|
||||
private class FunctionDeclaration extends Function {
|
||||
private ImplOrTraitItemNodeOption parent;
|
||||
|
||||
FunctionDeclaration() {
|
||||
not this = any(ImplOrTraitItemNode i).getAnAssocItem() and parent.isNone()
|
||||
or
|
||||
this = parent.asSome().getASuccessor(_)
|
||||
}
|
||||
|
||||
/** Holds if this function is associated with `i`. */
|
||||
predicate isAssoc(ImplOrTraitItemNode i) { this = i.getASuccessor(_) }
|
||||
predicate isAssoc(ImplOrTraitItemNode i) { i = parent.asSome() }
|
||||
|
||||
/** Holds if this is a free function. */
|
||||
predicate isFree() { not this = any(ImplOrTraitItemNode i).getAnAssocItem() }
|
||||
predicate isFree() { parent.isNone() }
|
||||
|
||||
/** Holds if this function is valid for `i`. */
|
||||
predicate isDeclaration(ImplOrTraitItemNodeOption i) {
|
||||
i.isNone() and
|
||||
this.isFree()
|
||||
or
|
||||
this.isAssoc(i.asSome())
|
||||
}
|
||||
predicate isFor(ImplOrTraitItemNodeOption i) { i = parent }
|
||||
|
||||
/**
|
||||
* Holds if this function is valid for `i`. If `i` is a trait or `impl` block then
|
||||
* this function must be declared directly inside `i`.
|
||||
*/
|
||||
predicate isDeclarationStrict(ImplOrTraitItemNodeOption i) {
|
||||
predicate isDirectlyFor(ImplOrTraitItemNodeOption i) {
|
||||
i.isNone() and
|
||||
this.isFree()
|
||||
or
|
||||
@@ -266,7 +269,7 @@ private class FunctionDeclaration extends Function {
|
||||
}
|
||||
|
||||
TypeParameter getTypeParameter(ImplOrTraitItemNodeOption i, TypeParameterPosition ppos) {
|
||||
this.isDeclaration(i) and
|
||||
i = parent and
|
||||
(
|
||||
typeParamMatchPosition(this.getGenericParamList().getATypeParam(), result, ppos)
|
||||
or
|
||||
@@ -274,36 +277,29 @@ private class FunctionDeclaration extends Function {
|
||||
or
|
||||
ppos.isImplicit() and result = TSelfTypeParameter(i.asSome())
|
||||
or
|
||||
ppos.isImplicit() and
|
||||
result.(AssociatedTypeTypeParameter).getTrait() = i.asSome()
|
||||
ppos.isImplicit() and result.(AssociatedTypeTypeParameter).getTrait() = i.asSome()
|
||||
or
|
||||
ppos.isImplicit() and
|
||||
this = result.(ImplTraitTypeTypeParameter).getFunction()
|
||||
ppos.isImplicit() and this = result.(ImplTraitTypeTypeParameter).getFunction()
|
||||
)
|
||||
}
|
||||
|
||||
pragma[nomagic]
|
||||
Type getParameterType(ImplOrTraitItemNodeOption i, FunctionPosition pos, TypePath path) {
|
||||
this.isDeclaration(i) and
|
||||
i = parent and
|
||||
(
|
||||
not pos.isReturn() and
|
||||
result = getAssocFunctionTypeAt(this, i.asSome(), pos, path)
|
||||
or
|
||||
i.isNone() and
|
||||
exists(Param p |
|
||||
p = this.getParam(pos.asPosition()) and
|
||||
result = p.getTypeRepr().(TypeMention).resolveTypeAt(path)
|
||||
)
|
||||
result = this.getParam(pos.asPosition()).getTypeRepr().(TypeMention).resolveTypeAt(path)
|
||||
)
|
||||
}
|
||||
|
||||
private Type resolveRetType(ImplOrTraitItemNodeOption i, TypePath path) {
|
||||
this.isDeclaration(i) and
|
||||
i = parent and
|
||||
(
|
||||
exists(FunctionPosition pos |
|
||||
result = getAssocFunctionTypeAt(this, i.asSome(), pos, path) and
|
||||
pos.isReturn()
|
||||
)
|
||||
result =
|
||||
getAssocFunctionTypeAt(this, i.asSome(), any(FunctionPosition pos | pos.isReturn()), path)
|
||||
or
|
||||
i.isNone() and
|
||||
result = getReturnTypeMention(this).resolveTypeAt(path)
|
||||
@@ -313,7 +309,7 @@ private class FunctionDeclaration extends Function {
|
||||
Type getReturnType(ImplOrTraitItemNodeOption i, TypePath path) {
|
||||
if this.isAsync()
|
||||
then
|
||||
this.isDeclaration(i) and
|
||||
i = parent and
|
||||
path.isEmpty() and
|
||||
result = getFutureTraitType()
|
||||
or
|
||||
@@ -332,6 +328,7 @@ private class FunctionDeclaration extends Function {
|
||||
}
|
||||
|
||||
string toStringExt(ImplOrTraitItemNode i) {
|
||||
i = parent.asSome() and
|
||||
if this = i.getAnAssocItem()
|
||||
then result = this.toString()
|
||||
else
|
||||
@@ -417,7 +414,7 @@ module CertainTypeInference {
|
||||
exists(ImplOrTraitItemNodeOption i |
|
||||
callResolvesTo(ce, p, f) and
|
||||
result = f.getReturnType(i, path) and
|
||||
f.isDeclarationStrict(i)
|
||||
f.isDirectlyFor(i)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -2191,29 +2188,31 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi
|
||||
private class MethodDeclaration extends Method, FunctionDeclaration { }
|
||||
|
||||
private newtype TDeclaration =
|
||||
MkDeclaration(ImplOrTraitItemNode i, MethodDeclaration m) { m.isAssoc(i) }
|
||||
TMethodFunctionDeclaration(ImplOrTraitItemNode i, MethodDeclaration m) { m.isAssoc(i) }
|
||||
|
||||
final class Declaration extends MkDeclaration {
|
||||
ImplOrTraitItemNode i_;
|
||||
ImplOrTraitItemNodeOption somei;
|
||||
final class Declaration extends TMethodFunctionDeclaration {
|
||||
ImplOrTraitItemNode parent;
|
||||
ImplOrTraitItemNodeOption someParent;
|
||||
MethodDeclaration m;
|
||||
|
||||
Declaration() {
|
||||
this = MkDeclaration(i_, m) and
|
||||
somei.asSome() = i_
|
||||
this = TMethodFunctionDeclaration(parent, m) and
|
||||
someParent.asSome() = parent
|
||||
}
|
||||
|
||||
predicate isMethod(ImplOrTraitItemNode i, Method method) { this = MkDeclaration(i, method) }
|
||||
predicate isMethod(ImplOrTraitItemNode i, Method method) {
|
||||
this = TMethodFunctionDeclaration(i, method)
|
||||
}
|
||||
|
||||
TypeParameter getTypeParameter(TypeParameterPosition ppos) {
|
||||
result = m.getTypeParameter(somei, ppos)
|
||||
result = m.getTypeParameter(someParent, ppos)
|
||||
}
|
||||
|
||||
Type getDeclaredType(DeclarationPosition dpos, TypePath path) {
|
||||
result = m.getDeclaredType(somei, dpos, path)
|
||||
result = m.getDeclaredType(someParent, dpos, path)
|
||||
}
|
||||
|
||||
string toString() { result = m.toStringExt(i_) }
|
||||
string toString() { result = m.toStringExt(parent) }
|
||||
|
||||
Location getLocation() { result = m.getLocation() }
|
||||
}
|
||||
@@ -2294,7 +2293,7 @@ private module MethodCallMatchingInput implements MatchingWithEnvironmentInputSi
|
||||
Declaration getTarget(string derefChainBorrow) {
|
||||
exists(ImplOrTraitItemNode i, Method m |
|
||||
m = this.getTarget(i, derefChainBorrow) and
|
||||
result = MkDeclaration(i, m)
|
||||
result = TMethodFunctionDeclaration(i, m)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -2668,7 +2667,7 @@ private module NonMethodResolution {
|
||||
ArgsAreInstantiationsOf<NonMethodArgsAreInstantiationsOfInput>;
|
||||
}
|
||||
|
||||
abstract private class TupleConstructor extends Addressable {
|
||||
abstract private class TupleLikeConstructor extends Addressable {
|
||||
abstract TypeParameter getTypeParameter(TypeParameterPosition ppos);
|
||||
|
||||
abstract Type getParameterType(FunctionPosition pos, TypePath path);
|
||||
@@ -2686,7 +2685,7 @@ abstract private class TupleConstructor extends Addressable {
|
||||
}
|
||||
}
|
||||
|
||||
private class TupleStruct extends TupleConstructor, Struct {
|
||||
private class TupleStruct extends TupleLikeConstructor, Struct {
|
||||
TupleStruct() { this.isTuple() }
|
||||
|
||||
override TypeParameter getTypeParameter(TypeParameterPosition ppos) {
|
||||
@@ -2709,7 +2708,7 @@ private class TupleStruct extends TupleConstructor, Struct {
|
||||
}
|
||||
}
|
||||
|
||||
private class TupleVariant extends TupleConstructor, Variant {
|
||||
private class TupleVariant extends TupleLikeConstructor, Variant {
|
||||
TupleVariant() { this.isTuple() }
|
||||
|
||||
override TypeParameter getTypeParameter(TypeParameterPosition ppos) {
|
||||
@@ -2748,9 +2747,9 @@ private module NonMethodCallMatchingInput implements MatchingInputSig {
|
||||
|
||||
private newtype TDeclaration =
|
||||
TNonMethodFunctionDeclaration(ImplOrTraitItemNodeOption i, NonMethodFunctionDeclaration f) {
|
||||
f.isDeclaration(i)
|
||||
f.isFor(i)
|
||||
} or
|
||||
TTupleConstructorDeclaration(TupleConstructor tc)
|
||||
TTupleLikeConstructorDeclaration(TupleLikeConstructor tc)
|
||||
|
||||
abstract class Declaration extends TDeclaration {
|
||||
abstract TypeParameter getTypeParameter(TypeParameterPosition ppos);
|
||||
@@ -2816,10 +2815,12 @@ private module NonMethodCallMatchingInput implements MatchingInputSig {
|
||||
override Location getLocation() { result = f.getLocation() }
|
||||
}
|
||||
|
||||
private class TupleConstructorDeclaration extends Declaration, TTupleConstructorDeclaration {
|
||||
TupleConstructor tc;
|
||||
private class TupleLikeConstructorDeclaration extends Declaration,
|
||||
TTupleLikeConstructorDeclaration
|
||||
{
|
||||
TupleLikeConstructor tc;
|
||||
|
||||
TupleConstructorDeclaration() { this = TTupleConstructorDeclaration(tc) }
|
||||
TupleLikeConstructorDeclaration() { this = TTupleLikeConstructorDeclaration(tc) }
|
||||
|
||||
override TypeParameter getTypeParameter(TypeParameterPosition ppos) {
|
||||
result = tc.getTypeParameter(ppos)
|
||||
@@ -2860,11 +2861,11 @@ private module NonMethodCallMatchingInput implements MatchingInputSig {
|
||||
f = this.resolveTraitFunctionViaPathResolution(i.asSome())
|
||||
or
|
||||
f = this.resolveCallTargetViaPathResolution() and
|
||||
f.isDeclarationStrict(i)
|
||||
f.isDirectlyFor(i)
|
||||
)
|
||||
or
|
||||
exists(ItemNode i | i = this.resolveCallTargetViaPathResolution() |
|
||||
result = TTupleConstructorDeclaration(i)
|
||||
result = TTupleLikeConstructorDeclaration(i)
|
||||
)
|
||||
}
|
||||
|
||||
@@ -2880,7 +2881,7 @@ private module NonMethodCallMatchingInput implements MatchingInputSig {
|
||||
)
|
||||
or
|
||||
// Tuple declarations, such as `Result::Ok(...)`, may also be context typed
|
||||
exists(TupleConstructor tc, TypeParameter tp |
|
||||
exists(TupleLikeConstructor tc, TypeParameter tp |
|
||||
tc = this.resolveCallTargetViaPathResolution() and
|
||||
pos.isReturn() and
|
||||
tp = tc.getReturnType(path) and
|
||||
@@ -3435,7 +3436,7 @@ private Type inferStructPatType(AstNode n, TypePath path) {
|
||||
private module TupleStructPatMatchingInput implements MatchingInputSig {
|
||||
import FunctionPositionMatchingInput
|
||||
|
||||
class Declaration = TupleConstructor;
|
||||
class Declaration = TupleLikeConstructor;
|
||||
|
||||
class Access extends TupleStructPat {
|
||||
Type getTypeArgument(TypeArgumentPosition apos, TypePath path) { none() }
|
||||
|
||||
@@ -3077,6 +3077,10 @@ mod literal_overlap {
|
||||
let x: usize = 0;
|
||||
let y = &1;
|
||||
let z = x.g(y); // $ target=MyTrait::g
|
||||
|
||||
let x = 0; // $ SPURIOUS: type=x:i32 $ MISSING: type=x:usize
|
||||
let y: usize = 1;
|
||||
let z = x.max(y); // $ target=max
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3546,54 +3546,56 @@ inferCertainType
|
||||
| main.rs:3066:13:3066:16 | self | | {EXTERNAL LOCATION} | & |
|
||||
| main.rs:3066:13:3066:16 | self | TRef | main.rs:3063:10:3063:10 | T |
|
||||
| main.rs:3070:25:3074:5 | { ... } | | {EXTERNAL LOCATION} | usize |
|
||||
| main.rs:3076:12:3080:5 | { ... } | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3076:12:3084:5 | { ... } | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3077:13:3077:13 | x | | {EXTERNAL LOCATION} | usize |
|
||||
| main.rs:3078:13:3078:13 | y | | {EXTERNAL LOCATION} | & |
|
||||
| main.rs:3078:17:3078:18 | &1 | | {EXTERNAL LOCATION} | & |
|
||||
| main.rs:3079:17:3079:17 | x | | {EXTERNAL LOCATION} | usize |
|
||||
| main.rs:3079:21:3079:21 | y | | {EXTERNAL LOCATION} | & |
|
||||
| main.rs:3088:11:3123:1 | { ... } | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3089:5:3089:21 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3090:5:3090:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo |
|
||||
| main.rs:3091:5:3091:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo |
|
||||
| main.rs:3091:20:3091:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
|
||||
| main.rs:3091:41:3091:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
|
||||
| main.rs:3092:5:3092:35 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3093:5:3093:41 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3094:5:3094:45 | ...::test(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3095:5:3095:30 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3096:5:3096:33 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3097:5:3097:21 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3098:5:3098:27 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3099:5:3099:32 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3100:5:3100:23 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3101:5:3101:36 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3102:5:3102:35 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3103:5:3103:29 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3082:13:3082:13 | y | | {EXTERNAL LOCATION} | usize |
|
||||
| main.rs:3083:23:3083:23 | y | | {EXTERNAL LOCATION} | usize |
|
||||
| main.rs:3092:11:3127:1 | { ... } | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3093:5:3093:21 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3094:5:3094:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo |
|
||||
| main.rs:3095:5:3095:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo |
|
||||
| main.rs:3095:20:3095:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
|
||||
| main.rs:3095:41:3095:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
|
||||
| main.rs:3096:5:3096:35 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3097:5:3097:41 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3098:5:3098:45 | ...::test(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3099:5:3099:30 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3100:5:3100:33 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3101:5:3101:21 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3102:5:3102:27 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3103:5:3103:32 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3104:5:3104:23 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3105:5:3105:24 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3106:5:3106:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3107:5:3107:18 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3108:5:3108:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future |
|
||||
| main.rs:3108:5:3108:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3109:5:3109:19 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3105:5:3105:36 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3106:5:3106:35 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3107:5:3107:29 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3108:5:3108:23 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3109:5:3109:24 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3110:5:3110:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3111:5:3111:14 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3112:5:3112:27 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3113:5:3113:15 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3114:5:3114:43 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3115:5:3115:15 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3116:5:3116:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3117:5:3117:23 | ...::test(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3118:5:3118:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3119:5:3119:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3120:5:3120:20 | ...::test(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3121:5:3121:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box |
|
||||
| main.rs:3121:5:3121:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global |
|
||||
| main.rs:3121:5:3121:20 | ...::f(...) | T | main.rs:2896:5:2898:5 | dyn MyTrait |
|
||||
| main.rs:3121:5:3121:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 |
|
||||
| main.rs:3121:16:3121:19 | true | | {EXTERNAL LOCATION} | bool |
|
||||
| main.rs:3122:5:3122:23 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3111:5:3111:18 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3112:5:3112:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future |
|
||||
| main.rs:3112:5:3112:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3113:5:3113:19 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3114:5:3114:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3115:5:3115:14 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3116:5:3116:27 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3117:5:3117:15 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3118:5:3118:43 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3119:5:3119:15 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3120:5:3120:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3121:5:3121:23 | ...::test(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3122:5:3122:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3123:5:3123:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3124:5:3124:20 | ...::test(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3125:5:3125:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box |
|
||||
| main.rs:3125:5:3125:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global |
|
||||
| main.rs:3125:5:3125:20 | ...::f(...) | T | main.rs:2896:5:2898:5 | dyn MyTrait |
|
||||
| main.rs:3125:5:3125:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 |
|
||||
| main.rs:3125:16:3125:19 | true | | {EXTERNAL LOCATION} | bool |
|
||||
| main.rs:3126:5:3126:23 | ...::f(...) | | {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:15:5:18:5 | if ... {...} | | {EXTERNAL LOCATION} | () |
|
||||
@@ -11046,7 +11048,7 @@ inferType
|
||||
| main.rs:3072:13:3072:17 | x.f() | | {EXTERNAL LOCATION} | usize |
|
||||
| main.rs:3073:9:3073:9 | x | | {EXTERNAL LOCATION} | i32 |
|
||||
| main.rs:3073:9:3073:9 | x | | {EXTERNAL LOCATION} | usize |
|
||||
| main.rs:3076:12:3080:5 | { ... } | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3076:12:3084:5 | { ... } | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3077:13:3077:13 | x | | {EXTERNAL LOCATION} | usize |
|
||||
| main.rs:3077:24:3077:24 | 0 | | {EXTERNAL LOCATION} | i32 |
|
||||
| main.rs:3077:24:3077:24 | 0 | | {EXTERNAL LOCATION} | usize |
|
||||
@@ -11062,48 +11064,57 @@ inferType
|
||||
| main.rs:3079:17:3079:22 | x.g(...) | TRef | {EXTERNAL LOCATION} | usize |
|
||||
| main.rs:3079:21:3079:21 | y | | {EXTERNAL LOCATION} | & |
|
||||
| main.rs:3079:21:3079:21 | y | TRef | {EXTERNAL LOCATION} | i32 |
|
||||
| main.rs:3088:11:3123:1 | { ... } | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3089:5:3089:21 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3090:5:3090:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo |
|
||||
| main.rs:3091:5:3091:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo |
|
||||
| main.rs:3091:20:3091:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
|
||||
| main.rs:3091:41:3091:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
|
||||
| main.rs:3092:5:3092:35 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3093:5:3093:41 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3094:5:3094:45 | ...::test(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3095:5:3095:30 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3096:5:3096:33 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3097:5:3097:21 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3098:5:3098:27 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3099:5:3099:32 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3100:5:3100:23 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3101:5:3101:36 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3102:5:3102:35 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3103:5:3103:29 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3081:13:3081:13 | x | | {EXTERNAL LOCATION} | i32 |
|
||||
| main.rs:3081:17:3081:17 | 0 | | {EXTERNAL LOCATION} | i32 |
|
||||
| main.rs:3082:13:3082:13 | y | | {EXTERNAL LOCATION} | usize |
|
||||
| main.rs:3082:24:3082:24 | 1 | | {EXTERNAL LOCATION} | i32 |
|
||||
| main.rs:3082:24:3082:24 | 1 | | {EXTERNAL LOCATION} | usize |
|
||||
| main.rs:3083:13:3083:13 | z | | {EXTERNAL LOCATION} | i32 |
|
||||
| main.rs:3083:17:3083:17 | x | | {EXTERNAL LOCATION} | i32 |
|
||||
| main.rs:3083:17:3083:24 | x.max(...) | | {EXTERNAL LOCATION} | i32 |
|
||||
| main.rs:3083:23:3083:23 | y | | {EXTERNAL LOCATION} | usize |
|
||||
| main.rs:3092:11:3127:1 | { ... } | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3093:5:3093:21 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3094:5:3094:20 | ...::f(...) | | main.rs:72:5:72:21 | Foo |
|
||||
| main.rs:3095:5:3095:60 | ...::g(...) | | main.rs:72:5:72:21 | Foo |
|
||||
| main.rs:3095:20:3095:38 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
|
||||
| main.rs:3095:41:3095:59 | ...::Foo {...} | | main.rs:72:5:72:21 | Foo |
|
||||
| main.rs:3096:5:3096:35 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3097:5:3097:41 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3098:5:3098:45 | ...::test(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3099:5:3099:30 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3100:5:3100:33 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3101:5:3101:21 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3102:5:3102:27 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3103:5:3103:32 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3104:5:3104:23 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3105:5:3105:24 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3106:5:3106:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3107:5:3107:18 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3108:5:3108:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future |
|
||||
| main.rs:3108:5:3108:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3109:5:3109:19 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3105:5:3105:36 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3106:5:3106:35 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3107:5:3107:29 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3108:5:3108:23 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3109:5:3109:24 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3110:5:3110:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3111:5:3111:14 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3112:5:3112:27 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3113:5:3113:15 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3114:5:3114:43 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3115:5:3115:15 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3116:5:3116:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3117:5:3117:23 | ...::test(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3118:5:3118:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3119:5:3119:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3120:5:3120:20 | ...::test(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3121:5:3121:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box |
|
||||
| main.rs:3121:5:3121:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global |
|
||||
| main.rs:3121:5:3121:20 | ...::f(...) | T | main.rs:2896:5:2898:5 | dyn MyTrait |
|
||||
| main.rs:3121:5:3121:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 |
|
||||
| main.rs:3121:16:3121:19 | true | | {EXTERNAL LOCATION} | bool |
|
||||
| main.rs:3122:5:3122:23 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3111:5:3111:18 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3112:5:3112:15 | ...::f(...) | | {EXTERNAL LOCATION} | dyn Future |
|
||||
| main.rs:3112:5:3112:15 | ...::f(...) | dyn(Output) | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3113:5:3113:19 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3114:5:3114:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3115:5:3115:14 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3116:5:3116:27 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3117:5:3117:15 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3118:5:3118:43 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3119:5:3119:15 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3120:5:3120:17 | ...::f(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3121:5:3121:23 | ...::test(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3122:5:3122:41 | ...::test_all_patterns(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3123:5:3123:49 | ...::box_patterns(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3124:5:3124:20 | ...::test(...) | | {EXTERNAL LOCATION} | () |
|
||||
| main.rs:3125:5:3125:20 | ...::f(...) | | {EXTERNAL LOCATION} | Box |
|
||||
| main.rs:3125:5:3125:20 | ...::f(...) | A | {EXTERNAL LOCATION} | Global |
|
||||
| main.rs:3125:5:3125:20 | ...::f(...) | T | main.rs:2896:5:2898:5 | dyn MyTrait |
|
||||
| main.rs:3125:5:3125:20 | ...::f(...) | T.dyn(T) | {EXTERNAL LOCATION} | i32 |
|
||||
| main.rs:3125:16:3125:19 | true | | {EXTERNAL LOCATION} | bool |
|
||||
| main.rs:3126:5:3126:23 | ...::f(...) | | {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 |
|
||||
|
||||
Reference in New Issue
Block a user