From 2f6d9c44702352386d98d14286b23ed41d6cb17b Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Mon, 27 Nov 2017 15:25:02 +0100 Subject: [PATCH] codegen: Discover invalid member access to instance field https://bugzilla.gnome.org/show_bug.cgi?id=790903 --- codegen/valaccodememberaccessmodule.vala | 8 ++++++++ tests/Makefile.am | 1 + tests/control-flow/bug790903.test | 9 +++++++++ 3 files changed, 18 insertions(+) create mode 100644 tests/control-flow/bug790903.test diff --git a/codegen/valaccodememberaccessmodule.vala b/codegen/valaccodememberaccessmodule.vala index 317a54589..f313f554d 100644 --- a/codegen/valaccodememberaccessmodule.vala +++ b/codegen/valaccodememberaccessmodule.vala @@ -571,6 +571,14 @@ public abstract class Vala.CCodeMemberAccessModule : CCodeControlFlowModule { } inst = pub_inst; } + + if (inst == null) { + // FIXME Report this with proper source-reference on the vala side! + Report.error (field.source_reference, "Invalid access to instance member `%s'".printf (field.get_full_name ())); + result.cvalue = new CCodeInvalidExpression (); + return result; + } + if (instance_target_type.data_type.is_reference_type () || (instance != null && instance.value_type is PointerType)) { result.cvalue = new CCodeMemberAccess.pointer (inst, get_ccode_name (field)); } else { diff --git a/tests/Makefile.am b/tests/Makefile.am index 481575c09..b06202928 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -117,6 +117,7 @@ TESTS = \ control-flow/bug691514.vala \ control-flow/bug736774-1.vala \ control-flow/bug736774-2.vala \ + control-flow/bug790903.test \ enums/enum_only.vala \ enums/enums.vala \ enums/flags.vala \ diff --git a/tests/control-flow/bug790903.test b/tests/control-flow/bug790903.test new file mode 100644 index 000000000..5d088aa2c --- /dev/null +++ b/tests/control-flow/bug790903.test @@ -0,0 +1,9 @@ +Invalid Code + +class Foo { + public string field; +} + +void main () { + var foo = (string) Foo.field; +} -- 2.47.2