[vala] Report error on duplicate constructor or destructor in class



commit edf34ae7a9e18334c817c58d5ae5c02a07083ac8
Author: Jürg Billeter <j bitron ch>
Date:   Fri Jan 8 22:59:38 2010 +0100

    Report error on duplicate constructor or destructor in class
    
    Fixes bug 600581.

 vala/valaparser.vala |   18 ++++++++++++++++++
 1 files changed, 18 insertions(+), 0 deletions(-)
---
diff --git a/vala/valaparser.vala b/vala/valaparser.vala
index 04e8303..ea5df10 100644
--- a/vala/valaparser.vala
+++ b/vala/valaparser.vala
@@ -2180,19 +2180,37 @@ public class Vala.Parser : CodeVisitor {
 		} else if (sym is Constructor) {
 			var c = (Constructor) sym;
 			if (c.binding == MemberBinding.INSTANCE) {
+				if (cl.constructor != null) {
+					Report.error (c.source_reference, "class already contains a constructor");
+				}
 				cl.constructor = c;
 			} else if (c.binding == MemberBinding.CLASS) {
+				if (cl.class_constructor != null) {
+					Report.error (c.source_reference, "class already contains a class constructor");
+				}
 				cl.class_constructor = c;
 			} else {
+				if (cl.static_constructor != null) {
+					Report.error (c.source_reference, "class already contains a static constructor");
+				}
 				cl.static_constructor = c;
 			}
 		} else if (sym is Destructor) {
 			var d = (Destructor) sym;
 			if (d.binding == MemberBinding.STATIC) {
+				if (cl.static_destructor != null) {
+					Report.error (d.source_reference, "class already contains a static destructor");
+				}
 				cl.static_destructor = (Destructor) d;
 			} else if (d.binding == MemberBinding.CLASS) {
+				if (cl.class_destructor != null) {
+					Report.error (d.source_reference, "class already contains a class destructor");
+				}
 				cl.class_destructor = (Destructor) d;
 			} else {
+				if (cl.destructor != null) {
+					Report.error (d.source_reference, "class already contains a destructor");
+				}
 				cl.destructor = (Destructor) d;
 			}
 		} else {



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