[vala/wip/issue/327: 15/27] Adapt MemberAccess error message to with statement



commit 6bc3d5b3bdf5cd28335b5e6470fc1da33a12235e
Author: Nick Schrader <nick schrader mailbox org>
Date:   Thu Apr 2 22:32:25 2020 -0300

    Adapt MemberAccess error message to with statement

 vala/valamemberaccess.vala | 10 +++++++++-
 1 file changed, 9 insertions(+), 1 deletion(-)
---
diff --git a/vala/valamemberaccess.vala b/vala/valamemberaccess.vala
index 5f05cc424..3948517b8 100644
--- a/vala/valamemberaccess.vala
+++ b/vala/valamemberaccess.vala
@@ -220,6 +220,8 @@ public class Vala.MemberAccess : Expression {
                bool may_access_instance_members = false;
                bool may_access_klass_members = false;
 
+               var visited_types = new ArrayList<DataType> ();
+
                symbol_reference = null;
 
                if (qualified) {
@@ -285,6 +287,7 @@ public class Vala.MemberAccess : Expression {
                                        if (variable_type is PointerType) {
                                                variable_type = ((PointerType) variable_type).base_type;
                                        }
+                                       visited_types.add(variable_type);
                                        
                                        symbol_reference = variable_type.get_member (member_name);
                                        if (symbol_reference != null) {
@@ -525,7 +528,12 @@ public class Vala.MemberAccess : Expression {
                                }
                        }
 
-                       Report.error (source_reference, "The name `%s' does not exist in the context of 
`%s'%s".printf (member_name, base_type_name, base_type_package));
+                       string visited_types_string = "";
+                       foreach (var type in visited_types) {
+                               visited_types_string += " or `%s'".printf(type.to_string());
+                       }
+
+                       Report.error (source_reference, "The name `%s' does not exist in the context of 
`%s'%s%s".printf (member_name, base_type_name, base_type_package, visited_types_string));
                        return false;
                } else if (symbol_reference.error) {
                        //ignore previous error


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]