From 03baaeb81c10b1db3ff0f4d498a9da18e06569f0 Mon Sep 17 00:00:00 2001 From: Pragmatic Software Date: Mon, 18 May 2015 20:48:15 -0700 Subject: [PATCH] Refactor handling of --version flags; add --analyze Move handling of certain language-specific flags out of compiler_vm_server.pl and into their own language modules. Add support for clang --analyze. Java now understands -version. --- modules/compiler_vm/compiler_vm_server.pl | 8 +------- modules/compiler_vm/languages/server/_c_base.pm | 9 +++++++++ modules/compiler_vm/languages/server/java.pm | 9 +++++++++ 3 files changed, 19 insertions(+), 7 deletions(-) diff --git a/modules/compiler_vm/compiler_vm_server.pl b/modules/compiler_vm/compiler_vm_server.pl index 0567a6fa..13bae1c5 100755 --- a/modules/compiler_vm/compiler_vm_server.pl +++ b/modules/compiler_vm/compiler_vm_server.pl @@ -126,13 +126,7 @@ sub interpret { $mod->preprocess; - if($cmdline =~ m/-?-version/) { - # cmdline contained version request, so don't postprocess and just return the version output - $mod->{output} =~ s/\s+\(Ubuntu.*-\d+ubuntu\d+\)//; - return $mod->{output}; - } - - $mod->postprocess if not $mod->{error}; + $mod->postprocess if not $mod->{error} and not $mod->{done}; if (exists $mod->{no_output} or not length $mod->{output}) { $mod->{output} .= "\n" if length $mod->{output}; diff --git a/modules/compiler_vm/languages/server/_c_base.pm b/modules/compiler_vm/languages/server/_c_base.pm index 8d7aad49..3f48e16d 100755 --- a/modules/compiler_vm/languages/server/_c_base.pm +++ b/modules/compiler_vm/languages/server/_c_base.pm @@ -6,6 +6,15 @@ use strict; package _c_base; use parent '_default'; +sub preprocess { + my $self = shift; + $self->SUPER::preprocess; + + if ($self->{cmdline} =~ m/--(?:version|analyze)/) { + $self->{done} = 1; + } +} + sub postprocess { my $self = shift; diff --git a/modules/compiler_vm/languages/server/java.pm b/modules/compiler_vm/languages/server/java.pm index ff4c1c34..284221f6 100755 --- a/modules/compiler_vm/languages/server/java.pm +++ b/modules/compiler_vm/languages/server/java.pm @@ -6,6 +6,15 @@ use strict; package java; use parent '_default'; +sub preprocess { + my $self = shift; + $self->SUPER::preprocess; + + if ($self->{cmdline} =~ m/-version/) { + $self->{done} = 1; + } +} + sub postprocess { my $self = shift;