From eae16b14b877f1c276ac8977e08a80a5cd8b934c Mon Sep 17 00:00:00 2001 From: Pragmatic Software Date: Fri, 17 Sep 2021 13:30:46 -0700 Subject: [PATCH] modules/compiler_vm: fix -noheaders; manually #including a header once again replaces default includes --- lib/PBot/VERSION.pm | 4 ++-- modules/compiler_vm/languages/_c_base.pm | 10 +++++++--- modules/compiler_vm/languages/_default.pm | 10 +++++----- 3 files changed, 14 insertions(+), 10 deletions(-) diff --git a/lib/PBot/VERSION.pm b/lib/PBot/VERSION.pm index e4439197..39f2891f 100644 --- a/lib/PBot/VERSION.pm +++ b/lib/PBot/VERSION.pm @@ -25,8 +25,8 @@ use PBot::Imports; # These are set by the /misc/update_version script use constant { BUILD_NAME => "PBot", - BUILD_REVISION => 4390, - BUILD_DATE => "2021-09-14", + BUILD_REVISION => 4405, + BUILD_DATE => "2021-09-17", }; sub initialize {} diff --git a/modules/compiler_vm/languages/_c_base.pm b/modules/compiler_vm/languages/_c_base.pm index 4ba553c9..1e5da3fd 100755 --- a/modules/compiler_vm/languages/_c_base.pm +++ b/modules/compiler_vm/languages/_c_base.pm @@ -68,7 +68,11 @@ sub process_custom_options { my $self = shift; $self->add_option("-nomain") if $self->{code} =~ s/(?:^|(?<=\s))-nomain\s*//i; - $self->add_option("-noheaders") if $self->{code} =~ s/(?:^|(?<=\s))-noheaders\s*//i; + + if ($self->{code} =~ s/(?:^|(?<=\s))-noheaders\s*//i) { + $self->add_option("-noheaders"); + $self->{no_gdb_extensions} = 1; + } $self->{include_options} = ""; while ($self->{code} =~ s/(?:^|(?<=\s))-include\s+(\S+)\s+//) { @@ -99,7 +103,7 @@ sub pretty_format { sub preprocess_code { my $self = shift; - $self->SUPER::preprocess_code; + $self->SUPER::preprocess_code(omit_prelude => 1); my $default_prelude = exists $self->{options}->{'-noheaders'} ? '' : $self->{prelude}; @@ -208,7 +212,7 @@ sub preprocess_code { } } - if (not $self->{no_gdb_extensions} and $prelude !~ m/^#include /mg) { + if (not exists $self->{options}->{'-noheaders'} and not $self->{no_gdb_extensions} and $prelude !~ m/^#include /mg) { $prelude .= "\n#include \n"; } diff --git a/modules/compiler_vm/languages/_default.pm b/modules/compiler_vm/languages/_default.pm index 3e6d5e28..407402b0 100755 --- a/modules/compiler_vm/languages/_default.pm +++ b/modules/compiler_vm/languages/_default.pm @@ -60,7 +60,7 @@ sub pretty_format { } sub preprocess_code { - my $self = shift; + my ($self, %opts) = @_; if ($self->{only_show}) { print "$self->{code}\n"; @@ -74,10 +74,6 @@ sub preprocess_code { close FILE; } - if (exists $self->{prelude}) { - $self->{code} = "$self->{prelude}\n$self->{code}"; - } - # replace \n outside of quotes with literal newline my $new_code = ""; @@ -133,6 +129,10 @@ sub preprocess_code { $new_code .= $ch; } + if (!$opts{omit_prelude} && exists $self->{prelude}) { + $self->{code} = "$self->{prelude}\n$self->{code}"; + } + $self->{code} = $new_code; }