534d79979d
Objects in the symbol table are intentionally constant. However, when converting "ExternalValue" AST nodes into symbols via symbol table lookup, IRGenerator::convertIdentifier was casting away constness because ExternalValueReference held a non-const pointer. Fixing this involved significant ripple-effect additions of "const" throughout the ExternalValue class and its subclasses. These changes generally appear to be benign, but one interesting edge case is `ExternalValue::write`, which intuitively does not seem to make sense as a const method. However, invoking `write` should not alter the ExternalValue object itself; rather, it is intended to alter the *external value* that is being referenced. (In practice, nothing invokes write() anyway except for one unit test, which continues to pass.) This issue was discovered while converting casts to `as<T>()` calls. Change-Id: I8ff6a477e475833d2a99c72f1c79c766b57767ee Reviewed-on: https://skia-review.googlesource.com/c/skia/+/311276 Reviewed-by: Brian Osman <brianosman@google.com> Commit-Queue: Brian Osman <brianosman@google.com> Auto-Submit: John Stiles <johnstiles@google.com> |
||
---|---|---|
.. | ||
include | ||
src | ||
BUILD.gn | ||
particles.gni |