(maint) Remove call to debugger
(maint) Remove debugger call
(#22363) Make compilation work using new evaluator

An extract_type_and_title method was added to the type calculator.
It extract method extracts type/title from catalog types. This is used
in the 3x interface as 3x cannot directly deal with types.

Class methods for the API methods are also added to make the type
calculator easier to use (no need to keep an instance around; although
doing so is slightly faster).

Tests used references like Class[Baz] where Baz is a PResourceType. This
is now supported by the AccessOperator, but it is questionable if this
should be supported.

The runtime3 support now has an initializer that is called from the
evaluator implementation. It creates a value converter that is needed to
convert the runtime objects from 4x to 3x (types, and regular
expressions) that are not supported as first class objects in the 3x
runtime.

The model label provider now also provides labels for the type model.
There are additional validation / runtime issues.

The validating parser was too fond of one particular acceptor and errors
from previous runs were accumulated.

The evaluating parser did not clear the definitions and name stack
arrays which led to accumulation of classes, definitions and nodes in
subsequent use of the same instance of evaluating parser.
(#22363) Make errors for illegal Class[x] references better.

This adds additional checks for Class[x] operations and adds more
tests. This also removes hyphen as a legal character in regexp patterns
used for checking (the lexer already did not include the hyphen and
they were flagged as errors. This change affects when strings are
checked for compliance with the name rule.
(#22363) Add compiler integration test for future evaluator

(This was missing in an earlier commit)
(#22363) Improve validation of names and variables

The validation of names and variables was too relaxed. The lexer
had stricter rules in some cases and validation rules for numeric
variables were too relaxed.

Patterns used in validation are now stricter.
(#22363) Improve error for Class[File['foo']]

The label produced for File['foo'] said "File['foo'] Type", now
it says "File['foo'] Resource Reference" (if it has a title) and
"File Type" if it does not.
(#22363) Fix failing test (typo in regexp).
(#22363) Remove support for extract type and title from type calculator

The support for 3x logic to convert catalog types to name and title
array was intended for calls from within 3x logic. This was not a
desired solution and the the support in the type calculator ended up
being unused. This removes it. (The corresponding logic is instead found
in the runtime3_support module).
(#22363) Add file/line when creating resources and parameters

The previous version of the logic cheated with "todo" and -1. Now
the file and line is picked up from the reference expression.
While not 100% accurate (it gives the resource expression as a whole,
or the parameter expr as a whole as the location instead of the more
detailed expression (one particular title etc).
(#22363) Add file/line information to resource operations

The resource related statments were using fake file and line infomation.
This is now picked up from the source position / locator and passed on
to 3x logic.
(#22363) Make hash lookup agnostic for nil/undef lookup

A hash lookup now interprets nil and undef as the same value when
doing a lookup.
(#22363) Add test to assert that hash lookup miss == undef
(#22363) Add label.plural support to LabelProvider

This makes it easier to add plural s in error messages.
(#22363) Improve label provider

There were labels missing for Booleans, and when given a class.
Also changes labels of all types to nnn-Type as that read better in
error messages; e.g. Integer-Type, String-Type.
(#22363) Improve error messages from [] operator

There were several cases where errors in arity and type incompatible
in the given keys produced generic error messages, messages without
location, and in a few cases with errors while formatting the error
message.

Test examples added.
(#22363) Add support for Float range.

A Float range behaves like an Integer range, but it does not
support iteration. (It is valuable in checking type of inferred type).

e.g. [1.0,4.2] =~ Array[Float[0, default]] # are floats and positive
(maint) Fix failing tests after rebase to latest master

4 tests were failing because Puppet[:hashed_node_data] was renamed
to Puppet[:trusted_node_data]. This commit changes the failing tests
to use the renamed setting.
(maint) Raise exception when reaching corner case of code merge

There is one case that occured once during testing where the
runtime tried to merge code in a PopsBridge::Expression. This was
probably due to faulty test setup. If this happens again an exception is
now raised. (There was a call to 'debugger' there).
(maint) Remove calls to debugger in performance / serialization tests