[vala/staging: 2/4] vala: Member reference for ObjectCreationExpression is never null
- From: Rico Tzschichholz <ricotz src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [vala/staging: 2/4] vala: Member reference for ObjectCreationExpression is never null
- Date: Tue, 22 Feb 2022 10:00:06 +0000 (UTC)
commit e72804efa476dedc48911d8ed73cd938b4e6fa92
Author: Rico Tzschichholz <ricotz ubuntu com>
Date: Tue Feb 22 10:43:10 2022 +0100
vala: Member reference for ObjectCreationExpression is never null
vala/valaobjectcreationexpression.vala | 110 ++++++++++++++-------------------
1 file changed, 48 insertions(+), 62 deletions(-)
---
diff --git a/vala/valaobjectcreationexpression.vala b/vala/valaobjectcreationexpression.vala
index dc2bd8f6c..9cea93417 100644
--- a/vala/valaobjectcreationexpression.vala
+++ b/vala/valaobjectcreationexpression.vala
@@ -41,13 +41,11 @@ public class Vala.ObjectCreationExpression : Expression, CallableExpression {
* The construction method to use or the data type to be created
* with the default construction method.
*/
- public MemberAccess? member_name {
+ public MemberAccess member_name {
get { return _member_name; }
private set {
_member_name = value;
- if (_member_name != null) {
- _member_name.parent_node = this;
- }
+ _member_name.parent_node = this;
}
}
@@ -62,7 +60,7 @@ public class Vala.ObjectCreationExpression : Expression, CallableExpression {
private List<MemberInitializer> object_initializer = new ArrayList<MemberInitializer> ();
private DataType _data_type;
- private MemberAccess? _member_name;
+ private MemberAccess _member_name;
/**
* Creates a new object creation expression.
@@ -71,7 +69,7 @@ public class Vala.ObjectCreationExpression : Expression, CallableExpression {
* @param source_reference reference to source code
* @return newly created object creation expression
*/
- public ObjectCreationExpression (MemberAccess? member_name, SourceReference? source_reference = null)
{
+ public ObjectCreationExpression (MemberAccess member_name, SourceReference? source_reference = null) {
this.source_reference = source_reference;
this.member_name = member_name;
}
@@ -183,76 +181,64 @@ public class Vala.ObjectCreationExpression : Expression, CallableExpression {
checked = true;
- if (member_name != null) {
- if (!member_name.check (context)) {
- error = true;
- return false;
- }
+ if (!member_name.check (context)) {
+ error = true;
+ return false;
}
TypeSymbol type;
- if (type_reference == null) {
- if (member_name == null) {
- error = true;
- Report.error (source_reference, "Incomplete object creation expression");
- return false;
- }
-
- if (member_name.symbol_reference == null) {
- error = true;
- return false;
- }
-
- var constructor_sym = member_name.symbol_reference;
- var type_sym = member_name.symbol_reference;
-
- var type_args = member_name.get_type_arguments ();
-
- if (constructor_sym is Method) {
- type_sym = constructor_sym.parent_symbol;
+ if (member_name.symbol_reference == null) {
+ error = true;
+ return false;
+ }
- var constructor = (Method) constructor_sym;
- if (!(constructor_sym is CreationMethod)) {
- error = true;
- Report.error (source_reference, "`%s' is not a creation method",
constructor.get_full_name ());
- return false;
- }
+ var constructor_sym = member_name.symbol_reference;
+ var type_sym = member_name.symbol_reference;
- symbol_reference = constructor;
+ var type_args = member_name.get_type_arguments ();
- // inner expression can also be base access when chaining constructors
- unowned MemberAccess? ma = member_name.inner as MemberAccess;
- if (ma != null) {
- type_args = ma.get_type_arguments ();
- }
- }
+ if (constructor_sym is Method) {
+ type_sym = constructor_sym.parent_symbol;
- if (type_sym is Class) {
- type = (TypeSymbol) type_sym;
- if (((Class) type).is_error_base) {
- type_reference = new ErrorType (null, null, source_reference);
- } else {
- type_reference = new ObjectType ((Class) type, source_reference);
- }
- } else if (type_sym is Struct) {
- type = (TypeSymbol) type_sym;
- type_reference = new StructValueType ((Struct) type, source_reference);
- } else if (type_sym is ErrorCode) {
- type = (TypeSymbol) type_sym;
- type_reference = new ErrorType ((ErrorDomain) type_sym.parent_symbol,
(ErrorCode) type_sym, source_reference);
- symbol_reference = type_sym;
- } else {
+ var constructor = (Method) constructor_sym;
+ if (!(constructor_sym is CreationMethod)) {
error = true;
- Report.error (source_reference, "`%s' is not a class, struct, or error code",
type_sym.get_full_name ());
+ Report.error (source_reference, "`%s' is not a creation method",
constructor.get_full_name ());
return false;
}
- foreach (DataType type_arg in type_args) {
- type_reference.add_type_argument (type_arg);
+ symbol_reference = constructor;
+
+ // inner expression can also be base access when chaining constructors
+ unowned MemberAccess? ma = member_name.inner as MemberAccess;
+ if (ma != null) {
+ type_args = ma.get_type_arguments ();
}
+ }
+
+ if (type_sym is Class) {
+ type = (TypeSymbol) type_sym;
+ if (((Class) type).is_error_base) {
+ type_reference = new ErrorType (null, null, source_reference);
+ } else {
+ type_reference = new ObjectType ((Class) type, source_reference);
+ }
+ } else if (type_sym is Struct) {
+ type = (TypeSymbol) type_sym;
+ type_reference = new StructValueType ((Struct) type, source_reference);
+ } else if (type_sym is ErrorCode) {
+ type = (TypeSymbol) type_sym;
+ type_reference = new ErrorType ((ErrorDomain) type_sym.parent_symbol, (ErrorCode)
type_sym, source_reference);
+ symbol_reference = type_sym;
} else {
- type = type_reference.type_symbol;
+ error = true;
+ Report.error (source_reference, "`%s' is not a class, struct, or error code",
type_sym.get_full_name ());
+ return false;
+ }
+
+ foreach (DataType type_arg in type_args) {
+ type_reference.add_type_argument (type_arg);
}
value_type = type_reference.copy ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]