From dd629f9f9b42dcca96ef4fc58df5ccb2e332b65b Mon Sep 17 00:00:00 2001 From: DeaDDooMER Date: Wed, 23 Aug 2017 13:15:27 +0300 Subject: [PATCH] =?utf8?q?JVM:=20=D0=BD=D0=B0=D0=BB=D0=B8=D1=87=D0=B8?= =?utf8?q?=D0=B5=20VAR-=D0=BF=D0=B0=D1=80=D0=B0=D0=BC=D0=B5=D1=80=D0=BE?= =?utf8?q?=D0=B2=20=D0=BE=D1=82=D1=80=D0=B0=D0=B6=D0=B0=D0=B5=D1=82=D1=81?= =?utf8?q?=D1=8F=20=D0=B2=20=D0=B8=D0=BC=D0=B5=D0=BD=D0=B8=20=D0=BA=D0=BB?= =?utf8?q?=D0=B0=D1=81=D1=81=D0=B0=20=D0=BF=D1=80=D0=BE=D1=86=D0=B5=D0=B4?= =?utf8?q?=D1=83=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Test.obn | 25 ------------------------- src/backends/jvm/generator-jvm-basic.c | 8 +++++++- 2 files changed, 7 insertions(+), 26 deletions(-) diff --git a/Test.obn b/Test.obn index 3c862c1..6fae529 100644 --- a/Test.obn +++ b/Test.obn @@ -1,28 +1,3 @@ MODULE Test; -TYPE - Object = RECORD - mth : PROCEDURE; - END; - -VAR - p : PROCEDURE; - o, a : Object; - -PROCEDURE X; -END X; - -PROCEDURE Z(VAR g : Object); -BEGIN - g.mth; -END Z; - -BEGIN - p := X; - ASSERT(p # NIL); - o.mth := X; - ASSERT(o.mth # NIL); - a := o; - ASSERT(a.mth # NIL); - Z(a); END Test. diff --git a/src/backends/jvm/generator-jvm-basic.c b/src/backends/jvm/generator-jvm-basic.c index 855a617..61088af 100644 --- a/src/backends/jvm/generator-jvm-basic.c +++ b/src/backends/jvm/generator-jvm-basic.c @@ -375,6 +375,7 @@ jvm_get_class_full_name(oberon_type_t * type) name = new_string("SYSTEM$PROCEDURE"); char * desc; + char * spec; desc = jvm_get_descriptor_safe(type -> base); name = new_string("%s$%s", name, desc); @@ -383,8 +384,13 @@ jvm_get_class_full_name(oberon_type_t * type) for(int i = 0; i < num; i++) { + spec = ""; + if(arg -> class == OBERON_CLASS_VAR_PARAM) + { + spec = "VAR"; + } desc = jvm_get_descriptor_safe(arg -> type); - name = new_string("%s%s", name, desc); + name = new_string("%s%s%s", name, spec, desc); arg = arg -> next; } -- 2.29.2