From db9b4357495b9d64d2ce88f62f2db078f4aadfbc Mon Sep 17 00:00:00 2001 From: Guillaume Gomez Date: Wed, 20 May 2015 18:59:12 +0200 Subject: [PATCH] Typo fix on E0067 --- src/librustc_typeck/diagnostics.rs | 32 ++++++++++++++++++++++-------- 1 file changed, 24 insertions(+), 8 deletions(-) diff --git a/src/librustc_typeck/diagnostics.rs b/src/librustc_typeck/diagnostics.rs index 7b48beae572..3c362285e0e 100644 --- a/src/librustc_typeck/diagnostics.rs +++ b/src/librustc_typeck/diagnostics.rs @@ -139,20 +139,36 @@ and [RFC 809] for more details. "##, E0067: r##" -The left-hand side of an assignment operator must be an lvalue expression. An -lvalue expression represents a memory location and includes item paths (ie, -namespaced variables), dereferences, indexing expressions, and field -references. +The left-hand side of a compound assignment expression must be an lvalue +expression. An lvalue expression represents a memory location and includes +item paths (ie, namespaced variables), dereferences, indexing expressions, +and field references. +Let's start with some bad examples: ``` use std::collections::LinkedList; -// Good -let mut list = LinkedList::new(); - - // Bad: assignment to non-lvalue expression LinkedList::new() += 1; + +// ... + +fn some_func(i: &mut i32) { + i += 12; // Error : '+=' operation cannot be applied on a reference ! +} + +And now some good examples: +``` +let mut i : i32 = 0; + +i += 12; // Good ! + +// ... + +fn some_func(i: &mut i32) { + *i += 12; // Good ! +} + ``` "##,