[vala] Fix check for missing return statements in non-void methods
- From: Jürg Billeter <juergbi src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala] Fix check for missing return statements in non-void methods
- Date: Mon, 15 Nov 2010 19:03:46 +0000 (UTC)
commit 5f971c5dc3a0dc4539b1de18047be724c05639b1
Author: Jürg Billeter <j bitron ch>
Date: Mon Nov 15 20:02:01 2010 +0100
Fix check for missing return statements in non-void methods
vala/valaconstructor.vala | 8 ++++++--
vala/valadestructor.vala | 6 +++++-
vala/valaflowanalyzer.vala | 2 +-
vala/valamethod.vala | 4 ++++
vala/valapropertyaccessor.vala | 4 ++++
vala/valasubroutine.vala | 2 ++
6 files changed, 22 insertions(+), 4 deletions(-)
---
diff --git a/vala/valaconstructor.vala b/vala/valaconstructor.vala
index 6c6d9dd..d16fc13 100644
--- a/vala/valaconstructor.vala
+++ b/vala/valaconstructor.vala
@@ -1,6 +1,6 @@
/* valaconstructor.vala
*
- * Copyright (C) 2006-2009 Jürg Billeter
+ * Copyright (C) 2006-2010 Jürg Billeter
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -35,7 +35,11 @@ public class Vala.Constructor : Subroutine {
* Specifies whether this is an instance or a class constructor.
*/
public MemberBinding binding { get; set; default = MemberBinding.INSTANCE; }
-
+
+ public override bool has_result {
+ get { return false; }
+ }
+
/**
* Creates a new constructor.
*
diff --git a/vala/valadestructor.vala b/vala/valadestructor.vala
index b051ca5..7ee3843 100644
--- a/vala/valadestructor.vala
+++ b/vala/valadestructor.vala
@@ -1,6 +1,6 @@
/* valadestructor.vala
*
- * Copyright (C) 2006-2008 Jürg Billeter
+ * Copyright (C) 2006-2010 Jürg Billeter
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -36,6 +36,10 @@ public class Vala.Destructor : Subroutine {
*/
public MemberBinding binding { get; set; default = MemberBinding.INSTANCE; }
+ public override bool has_result {
+ get { return false; }
+ }
+
/**
* Creates a new destructor.
*
diff --git a/vala/valaflowanalyzer.vala b/vala/valaflowanalyzer.vala
index da9c335..010c443 100644
--- a/vala/valaflowanalyzer.vala
+++ b/vala/valaflowanalyzer.vala
@@ -208,7 +208,7 @@ public class Vala.FlowAnalyzer : CodeVisitor {
if (current_block != null) {
// end of method body reachable
- if (context.profile != Profile.DOVA && m.result_var != null) {
+ if (context.profile != Profile.DOVA && m.has_result) {
Report.error (m.source_reference, "missing return statement at end of subroutine body");
m.error = true;
}
diff --git a/vala/valamethod.vala b/vala/valamethod.vala
index e86741c..bc301f5 100644
--- a/vala/valamethod.vala
+++ b/vala/valamethod.vala
@@ -43,6 +43,10 @@ public class Vala.Method : Subroutine {
}
}
+ public override bool has_result {
+ get { return !(return_type is VoidType); }
+ }
+
/**
* Specifies whether this method may only be called with an instance of
* the contained type.
diff --git a/vala/valapropertyaccessor.vala b/vala/valapropertyaccessor.vala
index 678eb4c..fbec601 100644
--- a/vala/valapropertyaccessor.vala
+++ b/vala/valapropertyaccessor.vala
@@ -67,6 +67,10 @@ public class Vala.PropertyAccessor : Subroutine {
*/
public bool automatic_body { get; set; }
+ public override bool has_result {
+ get { return readable; }
+ }
+
/**
* Represents the generated value parameter in a set accessor.
*/
diff --git a/vala/valasubroutine.vala b/vala/valasubroutine.vala
index c481d15..73cab98 100644
--- a/vala/valasubroutine.vala
+++ b/vala/valasubroutine.vala
@@ -34,6 +34,8 @@ public abstract class Vala.Subroutine : Symbol {
*/
public LocalVariable result_var { get; set; }
+ public abstract bool has_result { get; }
+
protected Subroutine (string? name, SourceReference? source_reference, Comment? comment = null) {
base (name, source_reference, comment);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]