From ac2eb0e30e5c65480e72565b104ea9a602fe31e2 Mon Sep 17 00:00:00 2001 From: DeaDDooMER Date: Wed, 27 Sep 2017 21:03:22 +0300 Subject: [PATCH] =?utf8?q?JVM:=20=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?utf8?q?=D0=BB=D0=B5=D0=BD=20=D0=BA=D0=BE=D0=BD=D1=84=D0=BB=D0=B8=D0=BA?= =?utf8?q?=20=D0=B8=D0=BC=D1=91=D0=BD=20=D0=BB=D0=BE=D0=BA=D0=B0=D0=BB?= =?utf8?q?=D1=8C=D0=BD=D1=8B=D1=85=20=D0=B8=20=D0=B3=D0=BB=D0=BE=D0=B1?= =?utf8?q?=D0=B0=D0=BB=D1=8C=D0=BD=D1=8B=D1=85=20=D0=BF=D1=80=D0=BE=D1=86?= =?utf8?q?=D0=B5=D0=B4=D1=83=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- Test.obn | 10 +++++++--- src/backends/jvm/generator-jvm-basic.c | 11 ++++++++++- tests/Test29.obn | 10 +++++++--- 3 files changed, 24 insertions(+), 7 deletions(-) diff --git a/Test.obn b/Test.obn index da60894..22a2a55 100644 --- a/Test.obn +++ b/Test.obn @@ -1,10 +1,14 @@ MODULE Test; -PROCEDURE A; +PROCEDURE A(a : INTEGER); + VAR + x : INTEGER; END A; -PROCEDURE B; - PROCEDURE A; +PROCEDURE B(b : SHORTINT); + PROCEDURE A(c : LONGINT); + VAR + y : ARRAY 3 OF INTEGER; END A; END B; diff --git a/src/backends/jvm/generator-jvm-basic.c b/src/backends/jvm/generator-jvm-basic.c index 033b842..2088559 100644 --- a/src/backends/jvm/generator-jvm-basic.c +++ b/src/backends/jvm/generator-jvm-basic.c @@ -330,13 +330,17 @@ jvm_get_field_full_name(oberon_object_t * x) { case OBERON_CLASS_VAR: return new_string("%s/%s", x -> module -> name, jvm_get_name(x)); + break; case OBERON_CLASS_PROC: return new_string("%s/%s", x -> module -> name, jvm_get_name(x)); + break; case OBERON_CLASS_FIELD: parent = jvm_get_class_full_name(x -> parent_type); return new_string("%s/%s", parent, jvm_get_name(x)); + break; case OBERON_CLASS_MODULE: return new_string(x -> module -> name); + break; default: gen_error("jvm_get_field_full_name: wat"); break; @@ -351,13 +355,18 @@ jvm_get_field_full_name_safe(oberon_object_t * x) switch(x -> class) { case OBERON_CLASS_VAR: - case OBERON_CLASS_PROC: return new_string("%s$%s", x -> module -> name, x -> name); + break; + case OBERON_CLASS_PROC: + return new_string("%s$%s", x -> module -> name, jvm_get_name(x)); + break; case OBERON_CLASS_FIELD:; char * rec_name = jvm_get_class_full_name(x -> parent_type); return new_string("%s$%s", rec_name, x -> name); + break; case OBERON_CLASS_MODULE: return new_string(x -> module -> name); + break; default: gen_error("jvm_get_field_full_name: wat"); break; diff --git a/tests/Test29.obn b/tests/Test29.obn index ab7e493..1df5da2 100644 --- a/tests/Test29.obn +++ b/tests/Test29.obn @@ -1,10 +1,14 @@ MODULE Test29; -PROCEDURE A; +PROCEDURE A(a : INTEGER); + VAR + x : INTEGER; END A; -PROCEDURE B; - PROCEDURE A; +PROCEDURE B(b : SHORTINT); + PROCEDURE A(c : LONGINT); + VAR + y : ARRAY 3 OF INTEGER; END A; END B; -- 2.29.2