mirror of
https://github.com/github/codeql.git
synced 2026-04-18 05:24:01 +02:00
Rust: Implement type inference for overloaded operators
This commit is contained in:
@@ -28,6 +28,12 @@ module Impl {
|
||||
|
||||
override string getOperatorName() { result = Generated::BinaryExpr.super.getOperatorName() }
|
||||
|
||||
override Expr getAnOperand() { result = [this.getLhs(), this.getRhs()] }
|
||||
override int getNumberOfOperands() { result = 2 }
|
||||
|
||||
override Expr getOperand(int n) {
|
||||
n = 0 and result = this.getLhs()
|
||||
or
|
||||
n = 1 and result = this.getRhs()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -7,6 +7,78 @@
|
||||
private import rust
|
||||
private import codeql.rust.elements.internal.ExprImpl::Impl as ExprImpl
|
||||
|
||||
/**
|
||||
* Holds if the operator `op` is overloaded to a trait with the canonical path
|
||||
* `path` and the method name `method`.
|
||||
*/
|
||||
private predicate isOverloaded(string op, string path, string method) {
|
||||
// Negation
|
||||
op = "-" and path = "core::ops::arith::Neg" and method = "neg"
|
||||
or
|
||||
// Not
|
||||
op = "!" and path = "core::ops::bit::Not" and method = "not"
|
||||
or
|
||||
// Dereference
|
||||
op = "*" and path = "core::ops::Deref" and method = "deref"
|
||||
or
|
||||
// Comparison operators
|
||||
op = "==" and path = "core::cmp::PartialEq" and method = "eq"
|
||||
or
|
||||
op = "!=" and path = "core::cmp::PartialEq" and method = "ne"
|
||||
or
|
||||
op = "<" and path = "core::cmp::PartialOrd" and method = "lt"
|
||||
or
|
||||
op = "<=" and path = "core::cmp::PartialOrd" and method = "le"
|
||||
or
|
||||
op = ">" and path = "core::cmp::PartialOrd" and method = "gt"
|
||||
or
|
||||
op = ">=" and path = "core::cmp::PartialOrd" and method = "ge"
|
||||
or
|
||||
// Arithmetic operators
|
||||
op = "+" and path = "core::ops::arith::Add" and method = "add"
|
||||
or
|
||||
op = "-" and path = "core::ops::arith::Sub" and method = "sub"
|
||||
or
|
||||
op = "*" and path = "core::ops::arith::Mul" and method = "mul"
|
||||
or
|
||||
op = "/" and path = "core::ops::arith::Div" and method = "div"
|
||||
or
|
||||
op = "%" and path = "core::ops::arith::Rem" and method = "rem"
|
||||
or
|
||||
// Arithmetic assignment expressions
|
||||
op = "+=" and path = "core::ops::arith::AddAssign" and method = "add_assign"
|
||||
or
|
||||
op = "-=" and path = "core::ops::arith::SubAssign" and method = "sub_assign"
|
||||
or
|
||||
op = "*=" and path = "core::ops::arith::MulAssign" and method = "mul_assign"
|
||||
or
|
||||
op = "/=" and path = "core::ops::arith::DivAssign" and method = "div_assign"
|
||||
or
|
||||
op = "%=" and path = "core::ops::arith::RemAssign" and method = "rem_assign"
|
||||
or
|
||||
// Bitwise operators
|
||||
op = "&" and path = "core::ops::bit::BitAnd" and method = "bitand"
|
||||
or
|
||||
op = "|" and path = "core::ops::bit::BitOr" and method = "bitor"
|
||||
or
|
||||
op = "^" and path = "core::ops::bit::BitXor" and method = "bitxor"
|
||||
or
|
||||
op = "<<" and path = "core::ops::bit::Shl" and method = "shl"
|
||||
or
|
||||
op = ">>" and path = "core::ops::bit::Shr" and method = "shr"
|
||||
or
|
||||
// Bitwise assignment operators
|
||||
op = "&=" and path = "core::ops::bit::BitAndAssign" and method = "bitand_assign"
|
||||
or
|
||||
op = "|=" and path = "core::ops::bit::BitOrAssign" and method = "bitor_assign"
|
||||
or
|
||||
op = "^=" and path = "core::ops::bit::BitXorAssign" and method = "bitxor_assign"
|
||||
or
|
||||
op = "<<=" and path = "core::ops::bit::ShlAssign" and method = "shl_assign"
|
||||
or
|
||||
op = ">>=" and path = "core::ops::bit::ShrAssign" and method = "shr_assign"
|
||||
}
|
||||
|
||||
/**
|
||||
* INTERNAL: This module contains the customizable definition of `Operation` and should not
|
||||
* be referenced directly.
|
||||
@@ -16,14 +88,28 @@ module Impl {
|
||||
* An operation, for example `&&`, `+=`, `!` or `*`.
|
||||
*/
|
||||
abstract class Operation extends ExprImpl::Expr {
|
||||
/**
|
||||
* Gets the operator name of this operation, if it exists.
|
||||
*/
|
||||
/** Gets the operator name of this operation, if it exists. */
|
||||
abstract string getOperatorName();
|
||||
|
||||
/** Gets the `n`th operand of this operation, if any. */
|
||||
abstract Expr getOperand(int n);
|
||||
|
||||
/**
|
||||
* Gets an operand of this operation.
|
||||
* Gets the number of operands of this operation.
|
||||
*
|
||||
* This is either 1 for prefix operations, or 2 for binary operations.
|
||||
*/
|
||||
abstract Expr getAnOperand();
|
||||
abstract int getNumberOfOperands();
|
||||
|
||||
/** Gets an operand of this operation. */
|
||||
Expr getAnOperand() { result = this.getOperand(_) }
|
||||
|
||||
/**
|
||||
* Holds if this operation is overloaded to the method `methodName` of the
|
||||
* trait `trait`.
|
||||
*/
|
||||
predicate isOverloaded(Trait trait, string methodName) {
|
||||
isOverloaded(this.getOperatorName(), trait.getCanonicalPath(), methodName)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -26,6 +26,8 @@ module Impl {
|
||||
|
||||
override string getOperatorName() { result = Generated::PrefixExpr.super.getOperatorName() }
|
||||
|
||||
override Expr getAnOperand() { result = this.getExpr() }
|
||||
override int getNumberOfOperands() { result = 1 }
|
||||
|
||||
override Expr getOperand(int n) { n = 0 and result = this.getExpr() }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -29,7 +29,9 @@ module Impl {
|
||||
|
||||
override string getOperatorName() { result = "&" }
|
||||
|
||||
override Expr getAnOperand() { result = this.getExpr() }
|
||||
override int getNumberOfOperands() { result = 1 }
|
||||
|
||||
override Expr getOperand(int n) { n = 0 and result = this.getExpr() }
|
||||
|
||||
private string getSpecPart(int index) {
|
||||
index = 0 and this.isRaw() and result = "raw"
|
||||
|
||||
@@ -643,12 +643,22 @@ private module CallExprBaseMatchingInput implements MatchingInputSig {
|
||||
|
||||
private import codeql.rust.elements.internal.CallExprImpl::Impl as CallExprImpl
|
||||
|
||||
class Access extends CallExprBase {
|
||||
abstract class Access extends Expr {
|
||||
abstract Type getTypeArgument(TypeArgumentPosition apos, TypePath path);
|
||||
|
||||
abstract AstNode getNodeAt(AccessPosition apos);
|
||||
|
||||
abstract Type getInferredType(AccessPosition apos, TypePath path);
|
||||
|
||||
abstract Declaration getTarget();
|
||||
}
|
||||
|
||||
private class CallExprBaseAccess extends Access instanceof CallExprBase {
|
||||
private TypeMention getMethodTypeArg(int i) {
|
||||
result = this.(MethodCallExpr).getGenericArgList().getTypeArg(i)
|
||||
}
|
||||
|
||||
Type getTypeArgument(TypeArgumentPosition apos, TypePath path) {
|
||||
override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) {
|
||||
exists(TypeMention arg | result = arg.resolveTypeAt(path) |
|
||||
arg = getExplicitTypeArgMention(CallExprImpl::getFunctionPath(this), apos.asTypeParam())
|
||||
or
|
||||
@@ -656,7 +666,7 @@ private module CallExprBaseMatchingInput implements MatchingInputSig {
|
||||
)
|
||||
}
|
||||
|
||||
AstNode getNodeAt(AccessPosition apos) {
|
||||
override AstNode getNodeAt(AccessPosition apos) {
|
||||
exists(int p, boolean isMethodCall |
|
||||
argPos(this, result, p, isMethodCall) and
|
||||
apos = TPositionalAccessPosition(p, isMethodCall)
|
||||
@@ -669,17 +679,40 @@ private module CallExprBaseMatchingInput implements MatchingInputSig {
|
||||
apos = TReturnAccessPosition()
|
||||
}
|
||||
|
||||
Type getInferredType(AccessPosition apos, TypePath path) {
|
||||
override Type getInferredType(AccessPosition apos, TypePath path) {
|
||||
result = inferType(this.getNodeAt(apos), path)
|
||||
}
|
||||
|
||||
Declaration getTarget() {
|
||||
override Declaration getTarget() {
|
||||
result = CallExprImpl::getResolvedFunction(this)
|
||||
or
|
||||
result = inferMethodCallTarget(this) // mutual recursion; resolving method calls requires resolving types and vice versa
|
||||
}
|
||||
}
|
||||
|
||||
private class OperationAccess extends Access instanceof Operation {
|
||||
override Type getTypeArgument(TypeArgumentPosition apos, TypePath path) {
|
||||
// The syntax for operators does not allow type arguments.
|
||||
none()
|
||||
}
|
||||
|
||||
override AstNode getNodeAt(AccessPosition apos) {
|
||||
result = super.getOperand(0) and apos = TSelfAccessPosition()
|
||||
or
|
||||
result = super.getOperand(1) and apos = TPositionalAccessPosition(0, true)
|
||||
or
|
||||
result = this and apos = TReturnAccessPosition()
|
||||
}
|
||||
|
||||
override Type getInferredType(AccessPosition apos, TypePath path) {
|
||||
result = inferType(this.getNodeAt(apos), path)
|
||||
}
|
||||
|
||||
override Declaration getTarget() {
|
||||
result = inferMethodCallTarget(this) // mutual recursion; resolving method calls requires resolving types and vice versa
|
||||
}
|
||||
}
|
||||
|
||||
predicate accessDeclarationPositionMatch(AccessPosition apos, DeclarationPosition dpos) {
|
||||
apos.isSelf() and
|
||||
dpos.isSelf()
|
||||
@@ -1059,6 +1092,26 @@ private module MethodCall {
|
||||
pragma[nomagic]
|
||||
override Type getTypeAt(TypePath path) { result = inferType(receiver, path) }
|
||||
}
|
||||
|
||||
private class OperationMethodCall extends MethodCallImpl instanceof Operation {
|
||||
TraitItemNode trait;
|
||||
string methodName;
|
||||
|
||||
OperationMethodCall() { super.isOverloaded(trait, methodName) }
|
||||
|
||||
override string getMethodName() { result = methodName }
|
||||
|
||||
override int getArity() { result = this.(Operation).getNumberOfOperands() - 1 }
|
||||
|
||||
override Trait getTrait() { result = trait }
|
||||
|
||||
pragma[nomagic]
|
||||
override Type getTypeAt(TypePath path) {
|
||||
result = inferType(this.(BinaryExpr).getLhs(), path)
|
||||
or
|
||||
result = inferType(this.(PrefixExpr).getExpr(), path)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
import MethodCall
|
||||
|
||||
@@ -770,7 +770,7 @@ mod method_supertraits {
|
||||
where
|
||||
Self: Sized,
|
||||
{
|
||||
if 3 > 2 { // $ MISSING: method=gt
|
||||
if 3 > 2 { // $ method=gt
|
||||
self.m1() // $ method=MyTrait1::m1
|
||||
} else {
|
||||
Self::m1(self)
|
||||
@@ -784,7 +784,7 @@ mod method_supertraits {
|
||||
where
|
||||
Self: Sized,
|
||||
{
|
||||
if 3 > 2 { // $ MISSING: method=gt
|
||||
if 3 > 2 { // $ method=gt
|
||||
self.m2().a // $ method=m2 $ fieldof=MyThing
|
||||
} else {
|
||||
Self::m2(self).a // $ fieldof=MyThing
|
||||
@@ -1027,7 +1027,7 @@ mod option_methods {
|
||||
println!("{:?}", MyOption::<MyOption<S>>::flatten(x6));
|
||||
|
||||
#[rustfmt::skip]
|
||||
let from_if = if 3 > 2 { // $ MISSING: method=gt
|
||||
let from_if = if 3 > 2 { // $ method=gt
|
||||
MyOption::MyNone()
|
||||
} else {
|
||||
MyOption::MySome(S)
|
||||
@@ -1035,7 +1035,7 @@ mod option_methods {
|
||||
println!("{:?}", from_if);
|
||||
|
||||
#[rustfmt::skip]
|
||||
let from_match = match 3 > 2 { // $ MISSING: method=gt
|
||||
let from_match = match 3 > 2 { // $ method=gt
|
||||
true => MyOption::MyNone(),
|
||||
false => MyOption::MySome(S),
|
||||
};
|
||||
@@ -1043,7 +1043,7 @@ mod option_methods {
|
||||
|
||||
#[rustfmt::skip]
|
||||
let from_loop = loop {
|
||||
if 3 > 2 { // $ MISSING: method=gt
|
||||
if 3 > 2 { // $ method=gt
|
||||
break MyOption::MyNone();
|
||||
}
|
||||
break MyOption::MySome(S);
|
||||
@@ -1245,7 +1245,7 @@ mod builtins {
|
||||
pub fn f() {
|
||||
let x: i32 = 1; // $ type=x:i32
|
||||
let y = 2; // $ type=y:i32
|
||||
let z = x + y; // $ MISSING: type=z:i32 method=add
|
||||
let z = x + y; // $ type=z:i32 method=add
|
||||
let z = x.abs(); // $ method=abs $ type=z:i32
|
||||
let c = 'c'; // $ type=c:char
|
||||
let hello = "Hello"; // $ type=hello:str
|
||||
@@ -1262,7 +1262,7 @@ mod operators {
|
||||
let y = true || false; // $ type=y:bool
|
||||
|
||||
let mut a;
|
||||
let cond = 34 == 33; // $ MISSING: method=eq
|
||||
let cond = 34 == 33; // $ method=eq
|
||||
if cond {
|
||||
let z = (a = 1); // $ type=z:() type=a:i32
|
||||
} else {
|
||||
@@ -1287,8 +1287,8 @@ mod overloadable_operators {
|
||||
// Vec2::add
|
||||
fn add(self, rhs: Self) -> Self {
|
||||
Vec2 {
|
||||
x: self.x + rhs.x, // $ fieldof=Vec2 MISSING: method=add
|
||||
y: self.y + rhs.y, // $ fieldof=Vec2 MISSING: method=add
|
||||
x: self.x + rhs.x, // $ fieldof=Vec2 method=add
|
||||
y: self.y + rhs.y, // $ fieldof=Vec2 method=add
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1296,8 +1296,8 @@ mod overloadable_operators {
|
||||
// Vec2::add_assign
|
||||
#[rustfmt::skip]
|
||||
fn add_assign(&mut self, rhs: Self) {
|
||||
self.x += rhs.x; // $ fieldof=Vec2 MISSING: method=add_assign
|
||||
self.y += rhs.y; // $ fieldof=Vec2 MISSING: method=add_assign
|
||||
self.x += rhs.x; // $ fieldof=Vec2 method=add_assign
|
||||
self.y += rhs.y; // $ fieldof=Vec2 method=add_assign
|
||||
}
|
||||
}
|
||||
impl Sub for Vec2 {
|
||||
@@ -1305,8 +1305,8 @@ mod overloadable_operators {
|
||||
// Vec2::sub
|
||||
fn sub(self, rhs: Self) -> Self {
|
||||
Vec2 {
|
||||
x: self.x - rhs.x, // $ fieldof=Vec2 MISSING: method=sub
|
||||
y: self.y - rhs.y, // $ fieldof=Vec2 MISSING: method=sub
|
||||
x: self.x - rhs.x, // $ fieldof=Vec2 method=sub
|
||||
y: self.y - rhs.y, // $ fieldof=Vec2 method=sub
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1314,8 +1314,8 @@ mod overloadable_operators {
|
||||
// Vec2::sub_assign
|
||||
#[rustfmt::skip]
|
||||
fn sub_assign(&mut self, rhs: Self) {
|
||||
self.x -= rhs.x; // $ fieldof=Vec2 MISSING: method=sub_assign
|
||||
self.y -= rhs.y; // $ fieldof=Vec2 MISSING: method=sub_assign
|
||||
self.x -= rhs.x; // $ fieldof=Vec2 method=sub_assign
|
||||
self.y -= rhs.y; // $ fieldof=Vec2 method=sub_assign
|
||||
}
|
||||
}
|
||||
impl Mul for Vec2 {
|
||||
@@ -1323,16 +1323,16 @@ mod overloadable_operators {
|
||||
// Vec2::mul
|
||||
fn mul(self, rhs: Self) -> Self {
|
||||
Vec2 {
|
||||
x: self.x * rhs.x, // $ fieldof=Vec2 MISSING: method=mul
|
||||
y: self.y * rhs.y, // $ fieldof=Vec2 MISSING: method=mul
|
||||
x: self.x * rhs.x, // $ fieldof=Vec2 method=mul
|
||||
y: self.y * rhs.y, // $ fieldof=Vec2 method=mul
|
||||
}
|
||||
}
|
||||
}
|
||||
impl MulAssign for Vec2 {
|
||||
// Vec2::mul_assign
|
||||
fn mul_assign(&mut self, rhs: Self) {
|
||||
self.x *= rhs.x; // $ fieldof=Vec2 MISSING: method=mul_assign
|
||||
self.y *= rhs.y; // $ fieldof=Vec2 MISSING: method=mul_assign
|
||||
self.x *= rhs.x; // $ fieldof=Vec2 method=mul_assign
|
||||
self.y *= rhs.y; // $ fieldof=Vec2 method=mul_assign
|
||||
}
|
||||
}
|
||||
impl Div for Vec2 {
|
||||
@@ -1340,16 +1340,16 @@ mod overloadable_operators {
|
||||
// Vec2::div
|
||||
fn div(self, rhs: Self) -> Self {
|
||||
Vec2 {
|
||||
x: self.x / rhs.x, // $ fieldof=Vec2 MISSING: method=div
|
||||
y: self.y / rhs.y, // $ fieldof=Vec2 MISSING: method=div
|
||||
x: self.x / rhs.x, // $ fieldof=Vec2 method=div
|
||||
y: self.y / rhs.y, // $ fieldof=Vec2 method=div
|
||||
}
|
||||
}
|
||||
}
|
||||
impl DivAssign for Vec2 {
|
||||
// Vec2::div_assign
|
||||
fn div_assign(&mut self, rhs: Self) {
|
||||
self.x /= rhs.x; // $ fieldof=Vec2 MISSING: method=div_assign
|
||||
self.y /= rhs.y; // $ fieldof=Vec2 MISSING: method=div_assign
|
||||
self.x /= rhs.x; // $ fieldof=Vec2 method=div_assign
|
||||
self.y /= rhs.y; // $ fieldof=Vec2 method=div_assign
|
||||
}
|
||||
}
|
||||
impl Rem for Vec2 {
|
||||
@@ -1357,16 +1357,16 @@ mod overloadable_operators {
|
||||
// Vec2::rem
|
||||
fn rem(self, rhs: Self) -> Self {
|
||||
Vec2 {
|
||||
x: self.x % rhs.x, // $ fieldof=Vec2 MISSING: method=rem
|
||||
y: self.y % rhs.y, // $ fieldof=Vec2 MISSING: method=rem
|
||||
x: self.x % rhs.x, // $ fieldof=Vec2 method=rem
|
||||
y: self.y % rhs.y, // $ fieldof=Vec2 method=rem
|
||||
}
|
||||
}
|
||||
}
|
||||
impl RemAssign for Vec2 {
|
||||
// Vec2::rem_assign
|
||||
fn rem_assign(&mut self, rhs: Self) {
|
||||
self.x %= rhs.x; // $ fieldof=Vec2 MISSING: method=rem_assign
|
||||
self.y %= rhs.y; // $ fieldof=Vec2 MISSING: method=rem_assign
|
||||
self.x %= rhs.x; // $ fieldof=Vec2 method=rem_assign
|
||||
self.y %= rhs.y; // $ fieldof=Vec2 method=rem_assign
|
||||
}
|
||||
}
|
||||
impl BitAnd for Vec2 {
|
||||
@@ -1374,16 +1374,16 @@ mod overloadable_operators {
|
||||
// Vec2::bitand
|
||||
fn bitand(self, rhs: Self) -> Self {
|
||||
Vec2 {
|
||||
x: self.x & rhs.x, // $ fieldof=Vec2 MISSING: method=bitand
|
||||
y: self.y & rhs.y, // $ fieldof=Vec2 MISSING: method=bitand
|
||||
x: self.x & rhs.x, // $ fieldof=Vec2 method=bitand
|
||||
y: self.y & rhs.y, // $ fieldof=Vec2 method=bitand
|
||||
}
|
||||
}
|
||||
}
|
||||
impl BitAndAssign for Vec2 {
|
||||
// Vec2::bitand_assign
|
||||
fn bitand_assign(&mut self, rhs: Self) {
|
||||
self.x &= rhs.x; // $ fieldof=Vec2 MISSING: method=bitand_assign
|
||||
self.y &= rhs.y; // $ fieldof=Vec2 MISSING: method=bitand_assign
|
||||
self.x &= rhs.x; // $ fieldof=Vec2 method=bitand_assign
|
||||
self.y &= rhs.y; // $ fieldof=Vec2 method=bitand_assign
|
||||
}
|
||||
}
|
||||
impl BitOr for Vec2 {
|
||||
@@ -1391,16 +1391,16 @@ mod overloadable_operators {
|
||||
// Vec2::bitor
|
||||
fn bitor(self, rhs: Self) -> Self {
|
||||
Vec2 {
|
||||
x: self.x | rhs.x, // $ fieldof=Vec2 MISSING: method=bitor
|
||||
y: self.y | rhs.y, // $ fieldof=Vec2 MISSING: method=bitor
|
||||
x: self.x | rhs.x, // $ fieldof=Vec2 method=bitor
|
||||
y: self.y | rhs.y, // $ fieldof=Vec2 method=bitor
|
||||
}
|
||||
}
|
||||
}
|
||||
impl BitOrAssign for Vec2 {
|
||||
// Vec2::bitor_assign
|
||||
fn bitor_assign(&mut self, rhs: Self) {
|
||||
self.x |= rhs.x; // $ fieldof=Vec2 MISSING: method=bitor_assign
|
||||
self.y |= rhs.y; // $ fieldof=Vec2 MISSING: method=bitor_assign
|
||||
self.x |= rhs.x; // $ fieldof=Vec2 method=bitor_assign
|
||||
self.y |= rhs.y; // $ fieldof=Vec2 method=bitor_assign
|
||||
}
|
||||
}
|
||||
impl BitXor for Vec2 {
|
||||
@@ -1408,16 +1408,16 @@ mod overloadable_operators {
|
||||
// Vec2::bitxor
|
||||
fn bitxor(self, rhs: Self) -> Self {
|
||||
Vec2 {
|
||||
x: self.x ^ rhs.x, // $ fieldof=Vec2 MISSING: method=bitxor
|
||||
y: self.y ^ rhs.y, // $ fieldof=Vec2 MISSING: method=bitxor
|
||||
x: self.x ^ rhs.x, // $ fieldof=Vec2 method=bitxor
|
||||
y: self.y ^ rhs.y, // $ fieldof=Vec2 method=bitxor
|
||||
}
|
||||
}
|
||||
}
|
||||
impl BitXorAssign for Vec2 {
|
||||
// Vec2::bitxor_assign
|
||||
fn bitxor_assign(&mut self, rhs: Self) {
|
||||
self.x ^= rhs.x; // $ fieldof=Vec2 MISSING: method=bitxor_assign
|
||||
self.y ^= rhs.y; // $ fieldof=Vec2 MISSING: method=bitxor_assign
|
||||
self.x ^= rhs.x; // $ fieldof=Vec2 method=bitxor_assign
|
||||
self.y ^= rhs.y; // $ fieldof=Vec2 method=bitxor_assign
|
||||
}
|
||||
}
|
||||
impl Shl<u32> for Vec2 {
|
||||
@@ -1425,16 +1425,16 @@ mod overloadable_operators {
|
||||
// Vec2::shl
|
||||
fn shl(self, rhs: u32) -> Self {
|
||||
Vec2 {
|
||||
x: self.x << rhs, // $ fieldof=Vec2 MISSING: method=shl
|
||||
y: self.y << rhs, // $ fieldof=Vec2 MISSING: method=shl
|
||||
x: self.x << rhs, // $ fieldof=Vec2 method=shl
|
||||
y: self.y << rhs, // $ fieldof=Vec2 method=shl
|
||||
}
|
||||
}
|
||||
}
|
||||
impl ShlAssign<u32> for Vec2 {
|
||||
// Vec2::shl_assign
|
||||
fn shl_assign(&mut self, rhs: u32) {
|
||||
self.x <<= rhs; // $ fieldof=Vec2 MISSING: method=shl_assign
|
||||
self.y <<= rhs; // $ fieldof=Vec2 MISSING: method=shl_assign
|
||||
self.x <<= rhs; // $ fieldof=Vec2 method=shl_assign
|
||||
self.y <<= rhs; // $ fieldof=Vec2 method=shl_assign
|
||||
}
|
||||
}
|
||||
impl Shr<u32> for Vec2 {
|
||||
@@ -1442,16 +1442,16 @@ mod overloadable_operators {
|
||||
// Vec2::shr
|
||||
fn shr(self, rhs: u32) -> Self {
|
||||
Vec2 {
|
||||
x: self.x >> rhs, // $ fieldof=Vec2 MISSING: method=shr
|
||||
y: self.y >> rhs, // $ fieldof=Vec2 MISSING: method=shr
|
||||
x: self.x >> rhs, // $ fieldof=Vec2 method=shr
|
||||
y: self.y >> rhs, // $ fieldof=Vec2 method=shr
|
||||
}
|
||||
}
|
||||
}
|
||||
impl ShrAssign<u32> for Vec2 {
|
||||
// Vec2::shr_assign
|
||||
fn shr_assign(&mut self, rhs: u32) {
|
||||
self.x >>= rhs; // $ fieldof=Vec2 MISSING: method=shr_assign
|
||||
self.y >>= rhs; // $ fieldof=Vec2 MISSING: method=shr_assign
|
||||
self.x >>= rhs; // $ fieldof=Vec2 method=shr_assign
|
||||
self.y >>= rhs; // $ fieldof=Vec2 method=shr_assign
|
||||
}
|
||||
}
|
||||
impl Neg for Vec2 {
|
||||
@@ -1459,8 +1459,8 @@ mod overloadable_operators {
|
||||
// Vec2::neg
|
||||
fn neg(self) -> Self {
|
||||
Vec2 {
|
||||
x: -self.x, // $ fieldof=Vec2 MISSING: method=neg
|
||||
y: -self.y, // $ fieldof=Vec2 MISSING: method=neg
|
||||
x: -self.x, // $ fieldof=Vec2 method=neg
|
||||
y: -self.y, // $ fieldof=Vec2 method=neg
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1469,164 +1469,164 @@ mod overloadable_operators {
|
||||
// Vec2::not
|
||||
fn not(self) -> Self {
|
||||
Vec2 {
|
||||
x: !self.x, // $ fieldof=Vec2 MISSING: method=not
|
||||
y: !self.y, // $ fieldof=Vec2 MISSING: method=not
|
||||
x: !self.x, // $ fieldof=Vec2 method=not
|
||||
y: !self.y, // $ fieldof=Vec2 method=not
|
||||
}
|
||||
}
|
||||
}
|
||||
impl PartialEq for Vec2 {
|
||||
// Vec2::eq
|
||||
fn eq(&self, other: &Self) -> bool {
|
||||
self.x == other.x && self.y == other.y // $ fieldof=Vec2 fieldof=Vec2 MISSING: method=eq
|
||||
self.x == other.x && self.y == other.y // $ fieldof=Vec2 method=eq
|
||||
}
|
||||
// Vec2::ne
|
||||
fn ne(&self, other: &Self) -> bool {
|
||||
self.x != other.x || self.y != other.y // $ fieldof=Vec2 fieldof=Vec2 MISSING: method=ne
|
||||
self.x != other.x || self.y != other.y // $ fieldof=Vec2 method=ne
|
||||
}
|
||||
}
|
||||
impl PartialOrd for Vec2 {
|
||||
// Vec2::partial_cmp
|
||||
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
|
||||
(self.x + self.y).partial_cmp(&(other.x + other.y)) // $ fieldof=Vec2 fieldof=Vec2 MISSING: method=partial_cmp method=add
|
||||
(self.x + self.y).partial_cmp(&(other.x + other.y)) // $ fieldof=Vec2 method=partial_cmp method=add
|
||||
}
|
||||
// Vec2::lt
|
||||
fn lt(&self, other: &Self) -> bool {
|
||||
self.x < other.x && self.y < other.y // $ fieldof=Vec2 fieldof=Vec2 MISSING: method=lt
|
||||
self.x < other.x && self.y < other.y // $ fieldof=Vec2 method=lt
|
||||
}
|
||||
// Vec2::le
|
||||
fn le(&self, other: &Self) -> bool {
|
||||
self.x <= other.x && self.y <= other.y // $ fieldof=Vec2 fieldof=Vec2 MISSING: method=le
|
||||
self.x <= other.x && self.y <= other.y // $ fieldof=Vec2 method=le
|
||||
}
|
||||
// Vec2::gt
|
||||
fn gt(&self, other: &Self) -> bool {
|
||||
self.x > other.x && self.y > other.y // $ fieldof=Vec2 fieldof=Vec2 MISSING: method=gt
|
||||
self.x > other.x && self.y > other.y // $ fieldof=Vec2 method=gt
|
||||
}
|
||||
// Vec2::ge
|
||||
fn ge(&self, other: &Self) -> bool {
|
||||
self.x >= other.x && self.y >= other.y // $ fieldof=Vec2 fieldof=Vec2 MISSING: method=ge
|
||||
self.x >= other.x && self.y >= other.y // $ fieldof=Vec2 method=ge
|
||||
}
|
||||
}
|
||||
pub fn f() {
|
||||
// Test for all overloadable operators on `i64`
|
||||
|
||||
// Comparison operators
|
||||
let i64_eq = (1i64 == 2i64); // $ MISSING: type=i64_eq:bool method=eq
|
||||
let i64_ne = (3i64 != 4i64); // $ MISSING: type=i64_ne:bool method=ne
|
||||
let i64_lt = (5i64 < 6i64); // $ MISSING: type=i64_lt:bool method=lt
|
||||
let i64_le = (7i64 <= 8i64); // $ MISSING: type=i64_le:bool method=le
|
||||
let i64_gt = (9i64 > 10i64); // $ MISSING: type=i64_gt:bool method=gt
|
||||
let i64_ge = (11i64 >= 12i64); // $ MISSING: type=i64_ge:bool method=ge
|
||||
let i64_eq = (1i64 == 2i64); // $ type=i64_eq:bool method=eq
|
||||
let i64_ne = (3i64 != 4i64); // $ type=i64_ne:bool method=ne
|
||||
let i64_lt = (5i64 < 6i64); // $ type=i64_lt:bool method=lt
|
||||
let i64_le = (7i64 <= 8i64); // $ type=i64_le:bool method=le
|
||||
let i64_gt = (9i64 > 10i64); // $ type=i64_gt:bool method=gt
|
||||
let i64_ge = (11i64 >= 12i64); // $ type=i64_ge:bool method=ge
|
||||
|
||||
// Arithmetic operators
|
||||
let i64_add = 13i64 + 14i64; // $ MISSING: type=i64_add:i64 method=add
|
||||
let i64_sub = 15i64 - 16i64; // $ MISSING: type=i64_sub:i64 method=sub
|
||||
let i64_mul = 17i64 * 18i64; // $ MISSING: type=i64_mul:i64 method=mul
|
||||
let i64_div = 19i64 / 20i64; // $ MISSING: type=i64_div:i64 method=div
|
||||
let i64_rem = 21i64 % 22i64; // $ MISSING: type=i64_rem:i64 method=rem
|
||||
let i64_add = 13i64 + 14i64; // $ type=i64_add:i64 method=add
|
||||
let i64_sub = 15i64 - 16i64; // $ type=i64_sub:i64 method=sub
|
||||
let i64_mul = 17i64 * 18i64; // $ type=i64_mul:i64 method=mul
|
||||
let i64_div = 19i64 / 20i64; // $ type=i64_div:i64 method=div
|
||||
let i64_rem = 21i64 % 22i64; // $ type=i64_rem:i64 method=rem
|
||||
|
||||
// Arithmetic assignment operators
|
||||
let mut i64_add_assign = 23i64;
|
||||
i64_add_assign += 24i64; // $ MISSING: method=add_assign
|
||||
i64_add_assign += 24i64; // $ method=add_assign
|
||||
|
||||
let mut i64_sub_assign = 25i64;
|
||||
i64_sub_assign -= 26i64; // $ MISSING: method=sub_assign
|
||||
i64_sub_assign -= 26i64; // $ method=sub_assign
|
||||
|
||||
let mut i64_mul_assign = 27i64;
|
||||
i64_mul_assign *= 28i64; // $ MISSING: method=mul_assign
|
||||
i64_mul_assign *= 28i64; // $ method=mul_assign
|
||||
|
||||
let mut i64_div_assign = 29i64;
|
||||
i64_div_assign /= 30i64; // $ MISSING: method=div_assign
|
||||
i64_div_assign /= 30i64; // $ method=div_assign
|
||||
|
||||
let mut i64_rem_assign = 31i64;
|
||||
i64_rem_assign %= 32i64; // $ MISSING: method=rem_assign
|
||||
i64_rem_assign %= 32i64; // $ method=rem_assign
|
||||
|
||||
// Bitwise operators
|
||||
let i64_bitand = 33i64 & 34i64; // $ MISSING: type=i64_bitand:i64 method=bitand
|
||||
let i64_bitor = 35i64 | 36i64; // $ MISSING: type=i64_bitor:i64 method=bitor
|
||||
let i64_bitxor = 37i64 ^ 38i64; // $ MISSING: type=i64_bitxor:i64 method=bitxor
|
||||
let i64_shl = 39i64 << 40i64; // $ MISSING: type=i64_shl:i64 method=shl
|
||||
let i64_shr = 41i64 >> 42i64; // $ MISSING: type=i64_shr:i64 method=shr
|
||||
let i64_bitand = 33i64 & 34i64; // $ type=i64_bitand:i64 method=bitand
|
||||
let i64_bitor = 35i64 | 36i64; // $ type=i64_bitor:i64 method=bitor
|
||||
let i64_bitxor = 37i64 ^ 38i64; // $ type=i64_bitxor:i64 method=bitxor
|
||||
let i64_shl = 39i64 << 40i64; // $ type=i64_shl:i64 method=shl
|
||||
let i64_shr = 41i64 >> 42i64; // $ type=i64_shr:i64 method=shr
|
||||
|
||||
// Bitwise assignment operators
|
||||
let mut i64_bitand_assign = 43i64;
|
||||
i64_bitand_assign &= 44i64; // $ MISSING: method=bitand_assign
|
||||
i64_bitand_assign &= 44i64; // $ method=bitand_assign
|
||||
|
||||
let mut i64_bitor_assign = 45i64;
|
||||
i64_bitor_assign |= 46i64; // $ MISSING: method=bitor_assign
|
||||
i64_bitor_assign |= 46i64; // $ method=bitor_assign
|
||||
|
||||
let mut i64_bitxor_assign = 47i64;
|
||||
i64_bitxor_assign ^= 48i64; // $ MISSING: method=bitxor_assign
|
||||
i64_bitxor_assign ^= 48i64; // $ method=bitxor_assign
|
||||
|
||||
let mut i64_shl_assign = 49i64;
|
||||
i64_shl_assign <<= 50i64; // $ MISSING: method=shl_assign
|
||||
i64_shl_assign <<= 50i64; // $ method=shl_assign
|
||||
|
||||
let mut i64_shr_assign = 51i64;
|
||||
i64_shr_assign >>= 52i64; // $ MISSING: method=shr_assign
|
||||
i64_shr_assign >>= 52i64; // $ method=shr_assign
|
||||
|
||||
let i64_neg = -53i64; // $ MISSING: type=i64_neg:i64 method=neg
|
||||
let i64_not = !54i64; // $ MISSING: type=i64_not:i64 method=not
|
||||
let i64_neg = -53i64; // $ type=i64_neg:i64 method=neg
|
||||
let i64_not = !54i64; // $ type=i64_not:i64 method=not
|
||||
|
||||
// Test for all overloadable operators on Vec2
|
||||
let v1 = Vec2 { x: 1, y: 2 };
|
||||
let v2 = Vec2 { x: 3, y: 4 };
|
||||
|
||||
// Comparison operators
|
||||
let vec2_eq = v1 == v2; // $ MISSING: type=vec2_eq:bool method=Vec2::eq
|
||||
let vec2_ne = v1 != v2; // $ MISSING: type=vec2_ne:bool method=Vec2::ne
|
||||
let vec2_lt = v1 < v2; // $ MISSING: type=vec2_lt:bool method=Vec2::lt
|
||||
let vec2_le = v1 <= v2; // $ MISSING: type=vec2_le:bool method=Vec2::le
|
||||
let vec2_gt = v1 > v2; // $ MISSING: type=vec2_gt:bool method=Vec2::gt
|
||||
let vec2_ge = v1 >= v2; // $ MISSING: type=vec2_ge:bool method=Vec2::ge
|
||||
let vec2_eq = v1 == v2; // $ type=vec2_eq:bool method=Vec2::eq
|
||||
let vec2_ne = v1 != v2; // $ type=vec2_ne:bool method=Vec2::ne
|
||||
let vec2_lt = v1 < v2; // $ type=vec2_lt:bool method=Vec2::lt
|
||||
let vec2_le = v1 <= v2; // $ type=vec2_le:bool method=Vec2::le
|
||||
let vec2_gt = v1 > v2; // $ type=vec2_gt:bool method=Vec2::gt
|
||||
let vec2_ge = v1 >= v2; // $ type=vec2_ge:bool method=Vec2::ge
|
||||
|
||||
// Arithmetic operators
|
||||
let vec2_add = v1 + v2; // $ MISSING: type=vec2_add:Vec2 method=Vec2::add
|
||||
let vec2_sub = v1 - v2; // $ MISSING: type=vec2_sub:Vec2 method=Vec2::sub
|
||||
let vec2_mul = v1 * v2; // $ MISSING: type=vec2_mul:Vec2 method=Vec2::mul
|
||||
let vec2_div = v1 / v2; // $ MISSING: type=vec2_div:Vec2 method=Vec2::div
|
||||
let vec2_rem = v1 % v2; // $ MISSING: type=vec2_rem:Vec2 method=Vec2::rem
|
||||
let vec2_add = v1 + v2; // $ type=vec2_add:Vec2 method=Vec2::add
|
||||
let vec2_sub = v1 - v2; // $ type=vec2_sub:Vec2 method=Vec2::sub
|
||||
let vec2_mul = v1 * v2; // $ type=vec2_mul:Vec2 method=Vec2::mul
|
||||
let vec2_div = v1 / v2; // $ type=vec2_div:Vec2 method=Vec2::div
|
||||
let vec2_rem = v1 % v2; // $ type=vec2_rem:Vec2 method=Vec2::rem
|
||||
|
||||
// Arithmetic assignment operators
|
||||
let mut vec2_add_assign = v1;
|
||||
vec2_add_assign += v2; // $ MISSING: method=Vec2::add_assign
|
||||
vec2_add_assign += v2; // $ method=Vec2::add_assign
|
||||
|
||||
let mut vec2_sub_assign = v1;
|
||||
vec2_sub_assign -= v2; // $ MISSING: method=Vec2::sub_assign
|
||||
vec2_sub_assign -= v2; // $ method=Vec2::sub_assign
|
||||
|
||||
let mut vec2_mul_assign = v1;
|
||||
vec2_mul_assign *= v2; // $ MISSING: method=Vec2::mul_assign
|
||||
vec2_mul_assign *= v2; // $ method=Vec2::mul_assign
|
||||
|
||||
let mut vec2_div_assign = v1;
|
||||
vec2_div_assign /= v2; // $ MISSING: method=Vec2::div_assign
|
||||
vec2_div_assign /= v2; // $ method=Vec2::div_assign
|
||||
|
||||
let mut vec2_rem_assign = v1;
|
||||
vec2_rem_assign %= v2; // $ MISSING: method=Vec2::rem_assign
|
||||
vec2_rem_assign %= v2; // $ method=Vec2::rem_assign
|
||||
|
||||
// Bitwise operators
|
||||
let vec2_bitand = v1 & v2; // $ MISSING: type=vec2_bitand:Vec2 method=Vec2::bitand
|
||||
let vec2_bitor = v1 | v2; // $ MISSING: type=vec2_bitor:Vec2 method=Vec2::bitor
|
||||
let vec2_bitxor = v1 ^ v2; // $ MISSING: type=vec2_bitxor:Vec2 method=Vec2::bitxor
|
||||
let vec2_shl = v1 << 1u32; // $ MISSING: type=vec2_shl:Vec2 method=Vec2::shl
|
||||
let vec2_shr = v1 >> 1u32; // $ MISSING: type=vec2_shr:Vec2 method=Vec2::shr
|
||||
let vec2_bitand = v1 & v2; // $ type=vec2_bitand:Vec2 method=Vec2::bitand
|
||||
let vec2_bitor = v1 | v2; // $ type=vec2_bitor:Vec2 method=Vec2::bitor
|
||||
let vec2_bitxor = v1 ^ v2; // $ type=vec2_bitxor:Vec2 method=Vec2::bitxor
|
||||
let vec2_shl = v1 << 1u32; // $ type=vec2_shl:Vec2 method=Vec2::shl
|
||||
let vec2_shr = v1 >> 1u32; // $ type=vec2_shr:Vec2 method=Vec2::shr
|
||||
|
||||
// Bitwise assignment operators
|
||||
let mut vec2_bitand_assign = v1;
|
||||
vec2_bitand_assign &= v2; // $ MISSING: method=Vec2::bitand_assign
|
||||
vec2_bitand_assign &= v2; // $ method=Vec2::bitand_assign
|
||||
|
||||
let mut vec2_bitor_assign = v1;
|
||||
vec2_bitor_assign |= v2; // $ MISSING: method=Vec2::bitor_assign
|
||||
vec2_bitor_assign |= v2; // $ method=Vec2::bitor_assign
|
||||
|
||||
let mut vec2_bitxor_assign = v1;
|
||||
vec2_bitxor_assign ^= v2; // $ MISSING: method=Vec2::bitxor_assign
|
||||
vec2_bitxor_assign ^= v2; // $ method=Vec2::bitxor_assign
|
||||
|
||||
let mut vec2_shl_assign = v1;
|
||||
vec2_shl_assign <<= 1u32; // $ MISSING: method=Vec2::shl_assign
|
||||
vec2_shl_assign <<= 1u32; // $ method=Vec2::shl_assign
|
||||
|
||||
let mut vec2_shr_assign = v1;
|
||||
vec2_shr_assign >>= 1u32; // $ MISSING: method=Vec2::shr_assign
|
||||
vec2_shr_assign >>= 1u32; // $ method=Vec2::shr_assign
|
||||
|
||||
// Prefix operators
|
||||
let vec2_neg = -v1; // $ MISSING: type=vec2_neg:Vec2 method=Vec2::neg
|
||||
let vec2_not = !v1; // $ MISSING: type=vec2_not:Vec2 method=Vec2::not
|
||||
let vec2_neg = -v1; // $ type=vec2_neg:Vec2 method=Vec2::neg
|
||||
let vec2_not = !v1; // $ type=vec2_not:Vec2 method=Vec2::not
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -837,6 +837,7 @@ inferType
|
||||
| main.rs:772:9:778:9 | { ... } | | main.rs:767:20:767:22 | Tr2 |
|
||||
| main.rs:773:13:777:13 | if ... {...} else {...} | | main.rs:767:20:767:22 | Tr2 |
|
||||
| main.rs:773:16:773:16 | 3 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:773:16:773:20 | ... > ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:773:20:773:20 | 2 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:773:22:775:13 | { ... } | | main.rs:767:20:767:22 | Tr2 |
|
||||
| main.rs:774:17:774:20 | self | | main.rs:767:5:779:5 | Self [trait MyTrait2] |
|
||||
@@ -848,6 +849,7 @@ inferType
|
||||
| main.rs:786:9:792:9 | { ... } | | main.rs:781:20:781:22 | Tr3 |
|
||||
| main.rs:787:13:791:13 | if ... {...} else {...} | | main.rs:781:20:781:22 | Tr3 |
|
||||
| main.rs:787:16:787:16 | 3 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:787:16:787:20 | ... > ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:787:20:787:20 | 2 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:787:22:789:13 | { ... } | | main.rs:781:20:781:22 | Tr3 |
|
||||
| main.rs:788:17:788:20 | self | | main.rs:781:5:793:5 | Self [trait MyTrait3] |
|
||||
@@ -1191,6 +1193,7 @@ inferType
|
||||
| main.rs:1030:23:1034:9 | if ... {...} else {...} | | main.rs:969:5:973:5 | MyOption |
|
||||
| main.rs:1030:23:1034:9 | if ... {...} else {...} | T | main.rs:1004:5:1005:13 | S |
|
||||
| main.rs:1030:26:1030:26 | 3 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:1030:26:1030:30 | ... > ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1030:30:1030:30 | 2 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:1030:32:1032:9 | { ... } | | main.rs:969:5:973:5 | MyOption |
|
||||
| main.rs:1030:32:1032:9 | { ... } | T | main.rs:1004:5:1005:13 | S |
|
||||
@@ -1209,6 +1212,7 @@ inferType
|
||||
| main.rs:1038:26:1041:9 | match ... { ... } | | main.rs:969:5:973:5 | MyOption |
|
||||
| main.rs:1038:26:1041:9 | match ... { ... } | T | main.rs:1004:5:1005:13 | S |
|
||||
| main.rs:1038:32:1038:32 | 3 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:1038:32:1038:36 | ... > ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1038:36:1038:36 | 2 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:1039:13:1039:16 | true | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1039:21:1039:38 | ...::MyNone(...) | | main.rs:969:5:973:5 | MyOption |
|
||||
@@ -1225,6 +1229,7 @@ inferType
|
||||
| main.rs:1045:25:1050:9 | loop { ... } | | main.rs:969:5:973:5 | MyOption |
|
||||
| main.rs:1045:25:1050:9 | loop { ... } | T | main.rs:1004:5:1005:13 | S |
|
||||
| main.rs:1046:16:1046:16 | 3 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:1046:16:1046:20 | ... > ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1046:20:1046:20 | 2 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:1047:23:1047:40 | ...::MyNone(...) | | main.rs:969:5:973:5 | MyOption |
|
||||
| main.rs:1047:23:1047:40 | ...::MyNone(...) | T | main.rs:1004:5:1005:13 | S |
|
||||
@@ -1578,7 +1583,9 @@ inferType
|
||||
| main.rs:1246:22:1246:22 | 1 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:1247:13:1247:13 | y | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:1247:17:1247:17 | 2 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:1248:13:1248:13 | z | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:1248:17:1248:17 | x | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:1248:17:1248:21 | ... + ... | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:1248:21:1248:21 | y | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:1249:13:1249:13 | z | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:1249:17:1249:17 | x | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
@@ -1602,8 +1609,11 @@ inferType
|
||||
| main.rs:1262:17:1262:29 | ... \|\| ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1262:25:1262:29 | false | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1264:13:1264:17 | mut a | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:1265:13:1265:16 | cond | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1265:20:1265:21 | 34 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:1265:20:1265:27 | ... == ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1265:26:1265:27 | 33 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:1266:12:1266:15 | cond | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1267:17:1267:17 | z | | file://:0:0:0:0 | () |
|
||||
| main.rs:1267:21:1267:27 | (...) | | file://:0:0:0:0 | () |
|
||||
| main.rs:1267:22:1267:22 | a | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
@@ -1959,18 +1969,23 @@ inferType
|
||||
| main.rs:1489:31:1489:35 | other | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1489:75:1491:9 | { ... } | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:565:1:581:1 | Option |
|
||||
| main.rs:1489:75:1491:9 | { ... } | T | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/cmp.rs:367:1:397:1 | Ordering |
|
||||
| main.rs:1490:13:1490:29 | (...) | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1490:13:1490:63 | ... .partial_cmp(...) | | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/option.rs:565:1:581:1 | Option |
|
||||
| main.rs:1490:13:1490:63 | ... .partial_cmp(...) | T | file:///RUSTUP_HOME/toolchain/lib/rustlib/src/rust/library/core/src/cmp.rs:367:1:397:1 | Ordering |
|
||||
| main.rs:1490:14:1490:17 | self | | file://:0:0:0:0 | & |
|
||||
| main.rs:1490:14:1490:17 | self | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1490:14:1490:19 | self.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1490:14:1490:28 | ... + ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1490:23:1490:26 | self | | file://:0:0:0:0 | & |
|
||||
| main.rs:1490:23:1490:26 | self | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1490:23:1490:28 | self.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1490:43:1490:62 | &... | | file://:0:0:0:0 | & |
|
||||
| main.rs:1490:43:1490:62 | &... | &T | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1490:44:1490:62 | (...) | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1490:45:1490:49 | other | | file://:0:0:0:0 | & |
|
||||
| main.rs:1490:45:1490:49 | other | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1490:45:1490:51 | other.x | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1490:45:1490:61 | ... + ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1490:55:1490:59 | other | | file://:0:0:0:0 | & |
|
||||
| main.rs:1490:55:1490:59 | other | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1490:55:1490:61 | other.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
@@ -2054,27 +2069,55 @@ inferType
|
||||
| main.rs:1506:44:1506:48 | other | | file://:0:0:0:0 | & |
|
||||
| main.rs:1506:44:1506:48 | other | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1506:44:1506:50 | other.y | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1513:13:1513:18 | i64_eq | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1513:22:1513:35 | (...) | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1513:23:1513:26 | 1i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1513:23:1513:34 | ... == ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1513:31:1513:34 | 2i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1514:13:1514:18 | i64_ne | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1514:22:1514:35 | (...) | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1514:23:1514:26 | 3i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1514:23:1514:34 | ... != ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1514:31:1514:34 | 4i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1515:13:1515:18 | i64_lt | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1515:22:1515:34 | (...) | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1515:23:1515:26 | 5i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1515:23:1515:33 | ... < ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1515:30:1515:33 | 6i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1516:13:1516:18 | i64_le | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1516:22:1516:35 | (...) | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1516:23:1516:26 | 7i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1516:23:1516:34 | ... <= ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1516:31:1516:34 | 8i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1517:13:1517:18 | i64_gt | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1517:22:1517:35 | (...) | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1517:23:1517:26 | 9i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1517:23:1517:34 | ... > ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1517:30:1517:34 | 10i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1518:13:1518:18 | i64_ge | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1518:22:1518:37 | (...) | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1518:23:1518:27 | 11i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1518:23:1518:36 | ... >= ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1518:32:1518:36 | 12i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1521:13:1521:19 | i64_add | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1521:23:1521:27 | 13i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1521:23:1521:35 | ... + ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1521:31:1521:35 | 14i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1522:13:1522:19 | i64_sub | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1522:23:1522:27 | 15i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1522:23:1522:35 | ... - ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1522:31:1522:35 | 16i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1523:13:1523:19 | i64_mul | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1523:23:1523:27 | 17i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1523:23:1523:35 | ... * ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1523:31:1523:35 | 18i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1524:13:1524:19 | i64_div | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1524:23:1524:27 | 19i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1524:23:1524:35 | ... / ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1524:31:1524:35 | 20i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1525:13:1525:19 | i64_rem | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1525:23:1525:27 | 21i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1525:23:1525:35 | ... % ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1525:31:1525:35 | 22i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1528:13:1528:30 | mut i64_add_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1528:34:1528:38 | 23i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
@@ -2101,15 +2144,25 @@ inferType
|
||||
| main.rs:1541:9:1541:22 | i64_rem_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1541:9:1541:31 | ... %= ... | | file://:0:0:0:0 | () |
|
||||
| main.rs:1541:27:1541:31 | 32i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1544:13:1544:22 | i64_bitand | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1544:26:1544:30 | 33i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1544:26:1544:38 | ... & ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1544:34:1544:38 | 34i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1545:13:1545:21 | i64_bitor | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1545:25:1545:29 | 35i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1545:25:1545:37 | ... \| ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1545:33:1545:37 | 36i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1546:13:1546:22 | i64_bitxor | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1546:26:1546:30 | 37i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1546:26:1546:38 | ... ^ ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1546:34:1546:38 | 38i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1547:13:1547:19 | i64_shl | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1547:23:1547:27 | 39i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1547:23:1547:36 | ... << ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1547:32:1547:36 | 40i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1548:13:1548:19 | i64_shr | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1548:23:1548:27 | 41i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1548:23:1548:36 | ... >> ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1548:32:1548:36 | 42i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1551:13:1551:33 | mut i64_bitand_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1551:37:1551:41 | 43i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
@@ -2136,7 +2189,11 @@ inferType
|
||||
| main.rs:1564:9:1564:22 | i64_shr_assign | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1564:9:1564:32 | ... >>= ... | | file://:0:0:0:0 | () |
|
||||
| main.rs:1564:28:1564:32 | 52i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1566:13:1566:19 | i64_neg | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1566:23:1566:28 | - ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1566:24:1566:28 | 53i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1567:13:1567:19 | i64_not | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1567:23:1567:28 | ! ... | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1567:24:1567:28 | 54i64 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1570:13:1570:14 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1570:18:1570:36 | Vec2 {...} | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
@@ -2144,84 +2201,164 @@ inferType
|
||||
| main.rs:1570:28:1570:28 | 1 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1570:34:1570:34 | 2 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:1570:34:1570:34 | 2 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1571:13:1571:14 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1571:13:1571:14 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1571:13:1571:14 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1571:18:1571:36 | Vec2 {...} | | file://:0:0:0:0 | & |
|
||||
| main.rs:1571:18:1571:36 | Vec2 {...} | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1571:18:1571:36 | Vec2 {...} | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1571:28:1571:28 | 3 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:1571:28:1571:28 | 3 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1571:34:1571:34 | 4 | | file:///BUILTINS/types.rs:12:1:12:15 | i32 |
|
||||
| main.rs:1571:34:1571:34 | 4 | | file:///BUILTINS/types.rs:13:1:13:15 | i64 |
|
||||
| main.rs:1574:13:1574:19 | vec2_eq | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1574:23:1574:24 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1574:23:1574:30 | ... == ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1574:29:1574:30 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1574:29:1574:30 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1574:29:1574:30 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1575:13:1575:19 | vec2_ne | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1575:23:1575:24 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1575:23:1575:30 | ... != ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1575:29:1575:30 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1575:29:1575:30 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1575:29:1575:30 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1576:13:1576:19 | vec2_lt | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1576:23:1576:24 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1576:23:1576:29 | ... < ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1576:28:1576:29 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1576:28:1576:29 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1576:28:1576:29 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1577:13:1577:19 | vec2_le | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1577:23:1577:24 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1577:23:1577:30 | ... <= ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1577:29:1577:30 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1577:29:1577:30 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1577:29:1577:30 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1578:13:1578:19 | vec2_gt | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1578:23:1578:24 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1578:23:1578:29 | ... > ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1578:28:1578:29 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1578:28:1578:29 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1578:28:1578:29 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1579:13:1579:19 | vec2_ge | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1579:23:1579:24 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1579:23:1579:30 | ... >= ... | | file:///BUILTINS/types.rs:3:1:5:16 | bool |
|
||||
| main.rs:1579:29:1579:30 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1579:29:1579:30 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1579:29:1579:30 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1582:13:1582:20 | vec2_add | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1582:24:1582:25 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1582:24:1582:30 | ... + ... | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1582:29:1582:30 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1582:29:1582:30 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1582:29:1582:30 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1583:13:1583:20 | vec2_sub | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1583:24:1583:25 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1583:24:1583:30 | ... - ... | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1583:29:1583:30 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1583:29:1583:30 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1583:29:1583:30 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1584:13:1584:20 | vec2_mul | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1584:24:1584:25 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1584:24:1584:30 | ... * ... | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1584:29:1584:30 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1584:29:1584:30 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1584:29:1584:30 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1585:13:1585:20 | vec2_div | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1585:24:1585:25 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1585:24:1585:30 | ... / ... | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1585:29:1585:30 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1585:29:1585:30 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1585:29:1585:30 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1586:13:1586:20 | vec2_rem | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1586:24:1586:25 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1586:24:1586:30 | ... % ... | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1586:29:1586:30 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1586:29:1586:30 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1586:29:1586:30 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1589:13:1589:31 | mut vec2_add_assign | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1589:35:1589:36 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1590:9:1590:23 | vec2_add_assign | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1590:9:1590:29 | ... += ... | | file://:0:0:0:0 | () |
|
||||
| main.rs:1590:28:1590:29 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1590:28:1590:29 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1590:28:1590:29 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1592:13:1592:31 | mut vec2_sub_assign | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1592:35:1592:36 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1593:9:1593:23 | vec2_sub_assign | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1593:9:1593:29 | ... -= ... | | file://:0:0:0:0 | () |
|
||||
| main.rs:1593:28:1593:29 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1593:28:1593:29 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1593:28:1593:29 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1595:13:1595:31 | mut vec2_mul_assign | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1595:35:1595:36 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1596:9:1596:23 | vec2_mul_assign | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1596:9:1596:29 | ... *= ... | | file://:0:0:0:0 | () |
|
||||
| main.rs:1596:28:1596:29 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1596:28:1596:29 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1596:28:1596:29 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1598:13:1598:31 | mut vec2_div_assign | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1598:35:1598:36 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1599:9:1599:23 | vec2_div_assign | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1599:9:1599:29 | ... /= ... | | file://:0:0:0:0 | () |
|
||||
| main.rs:1599:28:1599:29 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1599:28:1599:29 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1599:28:1599:29 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1601:13:1601:31 | mut vec2_rem_assign | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1601:35:1601:36 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1602:9:1602:23 | vec2_rem_assign | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1602:9:1602:29 | ... %= ... | | file://:0:0:0:0 | () |
|
||||
| main.rs:1602:28:1602:29 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1602:28:1602:29 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1602:28:1602:29 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1605:13:1605:23 | vec2_bitand | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1605:27:1605:28 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1605:27:1605:33 | ... & ... | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1605:32:1605:33 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1605:32:1605:33 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1605:32:1605:33 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1606:13:1606:22 | vec2_bitor | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1606:26:1606:27 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1606:26:1606:32 | ... \| ... | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1606:31:1606:32 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1606:31:1606:32 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1606:31:1606:32 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1607:13:1607:23 | vec2_bitxor | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1607:27:1607:28 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1607:27:1607:33 | ... ^ ... | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1607:32:1607:33 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1607:32:1607:33 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1607:32:1607:33 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1608:13:1608:20 | vec2_shl | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1608:24:1608:25 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1608:24:1608:33 | ... << ... | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1608:30:1608:33 | 1u32 | | file:///BUILTINS/types.rs:17:1:17:15 | u32 |
|
||||
| main.rs:1609:13:1609:20 | vec2_shr | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1609:24:1609:25 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1609:24:1609:33 | ... >> ... | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1609:30:1609:33 | 1u32 | | file:///BUILTINS/types.rs:17:1:17:15 | u32 |
|
||||
| main.rs:1612:13:1612:34 | mut vec2_bitand_assign | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1612:38:1612:39 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1613:9:1613:26 | vec2_bitand_assign | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1613:9:1613:32 | ... &= ... | | file://:0:0:0:0 | () |
|
||||
| main.rs:1613:31:1613:32 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1613:31:1613:32 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1613:31:1613:32 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1615:13:1615:33 | mut vec2_bitor_assign | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1615:37:1615:38 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1616:9:1616:25 | vec2_bitor_assign | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1616:9:1616:31 | ... \|= ... | | file://:0:0:0:0 | () |
|
||||
| main.rs:1616:30:1616:31 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1616:30:1616:31 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1616:30:1616:31 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1618:13:1618:34 | mut vec2_bitxor_assign | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1618:38:1618:39 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1619:9:1619:26 | vec2_bitxor_assign | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1619:9:1619:32 | ... ^= ... | | file://:0:0:0:0 | () |
|
||||
| main.rs:1619:31:1619:32 | v2 | | file://:0:0:0:0 | & |
|
||||
| main.rs:1619:31:1619:32 | v2 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1619:31:1619:32 | v2 | &T | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1621:13:1621:31 | mut vec2_shl_assign | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1621:35:1621:36 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1622:9:1622:23 | vec2_shl_assign | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
@@ -2232,7 +2369,11 @@ inferType
|
||||
| main.rs:1625:9:1625:23 | vec2_shr_assign | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1625:9:1625:32 | ... >>= ... | | file://:0:0:0:0 | () |
|
||||
| main.rs:1625:29:1625:32 | 1u32 | | file:///BUILTINS/types.rs:17:1:17:15 | u32 |
|
||||
| main.rs:1628:13:1628:20 | vec2_neg | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1628:24:1628:26 | - ... | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1628:25:1628:26 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1629:13:1629:20 | vec2_not | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1629:24:1629:26 | ! ... | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1629:25:1629:26 | v1 | | main.rs:1278:5:1283:5 | Vec2 |
|
||||
| main.rs:1635:5:1635:20 | ...::f(...) | | main.rs:67:5:67:21 | Foo |
|
||||
| main.rs:1636:5:1636:60 | ...::g(...) | | main.rs:67:5:67:21 | Foo |
|
||||
|
||||
Reference in New Issue
Block a user