To point 1, the DevError includes a backtrace and so that is the way that any call to it will find the incorrect line/file because that caller will be in ruby code, either a custom function or a template. I agree that the distinction between ParseError and DevError is not clear, and our use is sometimes a bit haphazard. You are right that this makes it consistent in `Puppet::Parser::Scope` so I won't worry this any more. I will, however, still ask for a test of the message since that is important.

To point 2, thank you for adding the tests for `AST::Leaf`, those will help us make sure we don't regress this again.