# [[[ HEADER ]]]
package RPerl::CompileUnit;
use strict;
use warnings;
use RPerl::AfterSubclass;
our $VERSION = 0.000_012;

# [[[ OO INHERITANCE ]]]
use parent qw(RPerl::GrammarRule);
use RPerl::GrammarRule;

# [[[ CRITICS ]]]
## no critic qw(ProhibitUselessNoCritic ProhibitMagicNumbers RequireCheckedSyscalls)  # USER DEFAULT 1: allow numeric values & print operator

# [[[ INCLUDES ]]]
use Scalar::Util 'blessed';

# [[[ OO PROPERTIES ]]]
# DEV NOTE: no active properties, this is a stub object for now, see children objects for active properties
our hashref $properties = {
        # Program, Module, Package, and Class objects
        #name        => my string $TYPED_name                   = undef,
        #version     => my string $TYPED_version                = undef,
        #includes    => my object_arrayref $TYPED_includes    = undef,
        #constants   => my object_arrayref $TYPED_constants   = undef,
        #subroutines => my object_arrayref $TYPED_subroutines = undef,

    # Program objects only
    #operations => my object_arrayref $TYPED_operations = undef,

    # Class objects only
    #methods    => my object_arrayref $TYPED_methods    = undef,
    #properties => my object_arrayref $TYPED_properties = undef,
};

# [[[ SUBROUTINES & OO METHODS ]]]

# ...

1;    # end of class