control-flow/sideeffects.vala \
control-flow/bug652549.vala \
control-flow/bug665904.vala \
+ control-flow/bug691514.vala \
enums/enums.vala \
enums/bug673879.vala \
structs/structs.vala \
--- /dev/null
+public string[] test() throws Error {
+ return { null, "1" };
+}
+
+void main() {
+ string t = (true ? "1" : "2") ?? "3";
+ assert (t == "1");
+
+ t = (false ? "1" : "2") ?? "3";
+ assert (t == "2");
+
+ t = (true ? null : "2") ?? "3";
+ assert (t == "3");
+
+ t = (false ? "1" : null) ?? "3";
+ assert (t == "3");
+
+ t = test()[0] ?? "2";
+ assert (t == "2");
+
+ t = test()[1] ?? "2";
+ assert (t == "1");
+}
if (operator == BinaryOperator.COALESCE) {
var local = new LocalVariable (null, get_temp_name (), left, source_reference);
var decl = new DeclarationStatement (local, source_reference);
- decl.check (context);
var right_stmt = new ExpressionStatement (new Assignment (new MemberAccess.simple (local.name, right.source_reference), right, AssignmentOperator.SIMPLE, right.source_reference), right.source_reference);
insert_statement (context.analyzer.insert_block, decl);
insert_statement (context.analyzer.insert_block, if_stmt);
+ if (!decl.check (context)) {
+ error = true;
+ return false;
+ }
+
if (!if_stmt.check (context)) {
error = true;
return false;