@@ -2453,51 +2453,30 @@ public SqmBetweenPredicate visitBetweenPredicate(HqlParser.BetweenPredicateConte
24532453 );
24542454 }
24552455
2456-
24572456 @ Override
2458- public SqmNullnessPredicate visitIsNullPredicate (HqlParser .IsNullPredicateContext ctx ) {
2459- return new SqmNullnessPredicate (
2460- ( SqmExpression <?>) ctx .expression (). accept ( this ),
2461- ctx . NOT () != null ,
2462- creationContext . getNodeBuilder ()
2463- );
2464- }
2465-
2466- @ Override
2467- public SqmEmptinessPredicate visitIsEmptyPredicate ( HqlParser . IsEmptyPredicateContext ctx ) {
2468- SqmExpression <?> expression = ( SqmExpression <?>) ctx . expression (). accept ( this );
2469- if ( expression instanceof SqmPluralValuedSimplePath ) {
2470- return new SqmEmptinessPredicate (
2471- ( SqmPluralValuedSimplePath <?>) expression ,
2472- ctx . NOT () != null ,
2473- creationContext . getNodeBuilder ()
2474- );
2475- }
2476- else {
2477- throw new SemanticException ( "Operand of ' is empty' operator must be a plural path" , query );
2457+ public SqmPredicate visitUnaryIsPredicate (HqlParser .UnaryIsPredicateContext ctx ) {
2458+ final var expression = ( SqmExpression <?>) ctx . expression (). accept ( this );
2459+ final var negated = ctx .NOT () != null ;
2460+ final var nodeBuilder = creationContext . getNodeBuilder ();
2461+ switch ( (( TerminalNode ) ctx . getChild ( ctx . getChildCount () - 1 )). getSymbol (). getType () ) {
2462+ case HqlParser . NULL :
2463+ return new SqmNullnessPredicate ( expression , negated , nodeBuilder );
2464+ case HqlParser . EMPTY :
2465+ if ( expression instanceof SqmPluralValuedSimplePath <?> ) {
2466+ return new SqmEmptinessPredicate ( ( SqmPluralValuedSimplePath <?>) expression , negated , nodeBuilder );
2467+ }
2468+ else {
2469+ throw new SemanticException ( "Operand of 'is empty' operator must be a plural path" , query );
2470+ }
2471+ case HqlParser . TRUE :
2472+ return new SqmTruthnessPredicate ( expression , true , negated , nodeBuilder );
2473+ case HqlParser . FALSE :
2474+ return new SqmTruthnessPredicate ( expression , false , negated , nodeBuilder );
2475+ default :
2476+ throw new AssertionError ( "Unknown unary is predicate: " + ctx . getChild ( ctx . getChildCount () - 1 ) );
24782477 }
24792478 }
24802479
2481- @ Override
2482- public Object visitIsTruePredicate (HqlParser .IsTruePredicateContext ctx ) {
2483- return new SqmTruthnessPredicate (
2484- (SqmExpression <?>) ctx .expression ().accept ( this ),
2485- true ,
2486- ctx .NOT () != null ,
2487- creationContext .getNodeBuilder ()
2488- );
2489- }
2490-
2491- @ Override
2492- public Object visitIsFalsePredicate (HqlParser .IsFalsePredicateContext ctx ) {
2493- return new SqmTruthnessPredicate (
2494- (SqmExpression <?>) ctx .expression ().accept ( this ),
2495- false ,
2496- ctx .NOT () != null ,
2497- creationContext .getNodeBuilder ()
2498- );
2499- }
2500-
25012480 @ Override
25022481 public Object visitComparisonOperator (HqlParser .ComparisonOperatorContext ctx ) {
25032482 final TerminalNode firstToken = (TerminalNode ) ctx .getChild ( 0 );
0 commit comments