@@ -1832,7 +1832,7 @@ static void VisitNodeInOut(
1832
1832
VisitNodeResult type_result;
1833
1833
VisitNode (ast, cur_node->getFirstChild (), type_result);
1834
1834
if (type_result._types .size () == 1 && type_result._types [0 ]) {
1835
- result._types .push_back (Type ( InOutType::get (type_result._types [0 ]) ));
1835
+ result._types .push_back (InOutType::get (type_result._types [0 ]));
1836
1836
} else {
1837
1837
result._error = " couldn't resolve referent type" ;
1838
1838
}
@@ -2049,16 +2049,17 @@ static void VisitNodeTupleElement(
2049
2049
}
2050
2050
}
2051
2051
2052
- if (tuple_type_result._error .empty () &&
2053
- tuple_type_result._types .size () == 1 ) {
2054
- if (!tuple_name.empty ())
2055
- result._tuple_type_element =
2056
- TupleTypeElt (tuple_type_result._types .front ().getPointer (),
2057
- ast->getIdentifier (tuple_name));
2058
- else
2059
- result._tuple_type_element =
2060
- TupleTypeElt (tuple_type_result._types .front ().getPointer ());
2061
- }
2052
+ if (!tuple_type_result._error .empty () || tuple_type_result._types .size () != 1 )
2053
+ return ;
2054
+
2055
+ auto tupleType = tuple_type_result._types .front ();
2056
+ auto typeFlags = ParameterTypeFlags ();
2057
+ typeFlags = typeFlags.withInOut (tupleType->is <InOutType>());
2058
+ if (auto *inOutTy = tupleType->getAs <InOutType>())
2059
+ tupleType = inOutTy->getObjectType ();
2060
+ Identifier idName =
2061
+ tuple_name.empty () ? Identifier () : ast->getIdentifier (tuple_name);
2062
+ result._tuple_type_element = TupleTypeElt (tupleType, idName, typeFlags);
2062
2063
}
2063
2064
2064
2065
static void VisitNodeTypeList (
0 commit comments