Skip to content

Commit cd4edcd

Browse files
committed
Add debug logging to MissingResultTypeSpecifierCorrector
Enhanced logging to improve traceability of corrections for missing `resultTypeSpecifier` values in `Query`, `ReturnClause`, and `Tuple` nodes. - Added logs for `Query` nodes to indicate when `ReturnClause.resultTypeSpecifier` is set to the `elementType` of a `ListTypeSpecifier`. - Added logs for `ReturnClause` nodes to indicate when `Tuple.resultTypeSpecifier` is set to the `TupleTypeSpecifier`. - Added logs for `Tuple` nodes to indicate when missing `Tuple.element.value.resultTypeSpecifier` values are set from the `TupleTypeSpecifier`. These changes provide additional context, such as `locator` and `expressionKey`, to aid debugging.
1 parent 38cb867 commit cd4edcd

File tree

1 file changed

+17
-3
lines changed

1 file changed

+17
-3
lines changed

Cql/Cql.Compiler/Preprocessing/MissingResultTypeSpecifierCorrector.cs

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,13 @@ internal class MissingResultTypeSpecifierCorrector(ILogger<MissingResultTypeSpec
3939
{
4040
resultTypeSpecifier: ListTypeSpecifier { elementType: { } elementType },
4141
@return: { resultTypeSpecifier: null } returnClause,
42-
})
42+
} query)
4343
{
44+
logger.LogDebug(
45+
"Setting missing ReturnClause.resultTypeSpecifier to ListTypeSpecifier.elementType to '{resultType}' on Query @ {locator}.\n{expressionKey}",
46+
elementType,
47+
query.locator,
48+
self.ContextStackString);
4449
returnClause.resultTypeSpecifier = elementType;
4550
}
4651
}
@@ -51,17 +56,26 @@ internal class MissingResultTypeSpecifierCorrector(ILogger<MissingResultTypeSpec
5156
{
5257
resultTypeSpecifier: TupleTypeSpecifier tupleTypeSpecifier,
5358
expression: Tuple { resultTypeSpecifier: null } tuple,
54-
})
59+
} clause)
5560
{
61+
logger.LogDebug(
62+
"Setting missing Tuple.resultTypeSpecifier to TupleTypeSpecifier to '{resultType}' on ReturnClause @ {locator}.\n{expressionKey}",
63+
tupleTypeSpecifier,
64+
clause.locator,
65+
self.ContextStackString);
5666
tuple.resultTypeSpecifier = tupleTypeSpecifier;
5767
}
5868
}
5969

6070
{
6171
// If a Tuple has elements with missing resultTypeSpecifier but the Tuple itself has a TupleTypeSpecifier as resultTypeSpecifier, set the missing element resultTypeSpecifiers from the TupleTypeSpecifier
62-
if (node is Tuple { element: { Length: > 0 } elements, resultTypeSpecifier: TupleTypeSpecifier tupleTypeSpecifier }
72+
if (node is Tuple { element: { Length: > 0 } elements, resultTypeSpecifier: TupleTypeSpecifier tupleTypeSpecifier } tuple
6373
&& elements.Any(e => e.value.resultTypeSpecifier is null))
6474
{
75+
logger.LogDebug(
76+
"Setting missing Tuple.element.value.resultTypeSpecifier from TupleTypeSpecifier on Tuple @ {locator}.\n{expressionKey}",
77+
tuple.locator,
78+
self.ContextStackString);
6579
foreach (var (index, tupleElement) in elements.Select((v, i) => (i, v)))
6680
{
6781
tupleElement.value.resultTypeSpecifier ??= tupleTypeSpecifier.element[index].elementType;

0 commit comments

Comments
 (0)