diff --git a/src/items/associated-items.md b/src/items/associated-items.md
index 68e5de163..f5dc31aae 100644
--- a/src/items/associated-items.md
+++ b/src/items/associated-items.md
@@ -293,22 +293,35 @@ type that the definition has to implement.
 An *associated constant definition* defines a constant associated with a
 type. It is written the same as a [constant item].
 
-Unlike [free] constants, associated constant definitions undergo
-[constant evaluation] only when referenced.
+Associated constant definitions undergo [constant evaluation] only when
+referenced. Further, definitions that include [generic parameters] are
+evaluated after monomorphization.
 
-```rust
+```rust,compile_fail
 struct Struct;
+struct GenericStruct<const ID: i32>;
 
 impl Struct {
-    const ID: i32 = 1;
     // Definition not immediately evaluated
     const PANIC: () = panic!("compile-time panic");
 }
 
+impl<const ID: i32> GenericStruct<ID> {
+    // Definition not immediately evaluated
+    const NON_ZERO: () = if ID == 0 {
+        panic!("contradiction")
+    };
+}
+
 fn main() {
-    assert_eq!(1, Struct::ID);
     // Referencing Struct::PANIC causes compilation error
-    // let _ = Struct::PANIC;
+    let _ = Struct::PANIC;
+
+    // Fine, ID is not 0
+    let _ = GenericStruct::<1>::NON_ZERO;
+
+    // Compilation error from evaluating NON_ZERO with ID=0
+    let _ = GenericStruct::<0>::NON_ZERO;
 }
 ```
 
@@ -381,5 +394,4 @@ fn main() {
 [regular function parameters]: functions.md#attributes-on-function-parameters
 [generic parameters]: generics.md
 [where clauses]: generics.md#where-clauses
-[free]: ../glossary.md#free-item
 [constant evaluation]: ../const_eval.md