Quote: "So the values of numerArg and denomArg are not available during the initialization of RationalTrait (more precisely, a selection of either value would yield the default value for type Int, 0) (...) If you try to instantiate this trait with some numerator and denominator expressions that are not simple literals, you'll get an exception: (...) The exception in this example was thrown because denomArg still had its default value of 0 when class RationalTrait was initialized, which caused the require invocation to fail."
Something's inconsistent here, I think it's the highlighted part that's simply wrong. Or put in other words: if the bold part (a selection of either value would yield 0) was true, it wouldn't make a difference if the given overriding definition was using "expressions that are not simple literals" because this way or another, the default value would be returned.
2.7.2.final actually agrees with the "imprecise" text: a literal is obviously accepted, an expression causes the value to be 'default' initialized and only bound later. Now if the 'precisely' speaking was correct, scala would be wrong; or vice versa.