> On May 24, 2016, at 9:48 AM, Tim Bodeit via swift-dev <swift-dev@swift.org> > wrote: > I couldn’t find any documentation about lvalues in Swift. Can anybody give me > a short explanation of what exactly an lvalue is? > > In C++ all variables, including those marked with the const modifier seem to > be lvalues. It seems to me, that this is not the case for let constants in > Swift.
Correct. There are potential language directions Swift could head in that would force us to formalize a notion of addressable but immutable memory in our typing judgement, but right now that is not necessary. If you are looking at compiler internals, note that SILGen does sometimes form LValues for immutable values (which it then avoids actually mutating). John. > > I compared the output of swiftc -dump-ast for > let i = 42 > let j = i+1 > and > var i = 42 > let j = i+1 > > Where i was respectively accessed as: > > (declref_expr type='Int' location=lvaluetest.swift:2:9 > range=[lvaluetest.swift:2:9 - line:2:9] > decl=lvaluetest.(file).i@lvaluetest.swift <mailto:i@lvaluetest.swift>:1:5 > direct_to_storage specialized=no) > > (load_expr implicit type='Int' location=lvaluetest.swift:2:9 > range=[lvaluetest.swift:2:9 - line:2:9] > (declref_expr type='@lvalue Int' accessKind=read > location=lvaluetest.swift:2:9 range=[lvaluetest.swift:2:9 - line:2:9] > decl=lvaluetest.(file).i@lvaluetest.swift <mailto:i@lvaluetest.swift>:1:5 > direct_to_storage specialized=no)) > > Is my assumption correct, that let constants are not lvalues? > > Cheers, > > Tim > _______________________________________________ > swift-dev mailing list > swift-dev@swift.org > https://lists.swift.org/mailman/listinfo/swift-dev
_______________________________________________ swift-dev mailing list swift-dev@swift.org https://lists.swift.org/mailman/listinfo/swift-dev