RelationalExprDescr check = new RelationalExprDescr( "instanceof", false, null,
private String[] processNullSafeDereferencing( String expr, AtomicExprDescr atomicExpr, ConstraintConnectiveDescr ccd, int nullSafePos, int parentIdx, int childIdx ) { // convert "field1!.field2" in ["field1 != null && ", "field1.field2"] String field1 = expr.substring( 0, nullSafePos ).trim(); expr = field1 + "." + expr.substring( nullSafePos + 2 ).trim(); RelationalExprDescr check = new RelationalExprDescr( "!=", false, null, new AtomicExprDescr( getPreconditionsToAppend( field1 ) ), new AtomicExprDescr( "null" ) ); String innerCheck = ""; if ( ccd.getConnective() == ConnectiveType.AND || ccd.getConnective() == ConnectiveType.INC_AND ) { ccd.getDescrs().add( childIdx, check ); } else { BaseDescr desc = ccd.getDescrs().get( parentIdx ); if ( desc instanceof ConstraintConnectiveDescr ) { ((ConstraintConnectiveDescr) desc).getDescrs().add( childIdx, check ); } else { ConstraintConnectiveDescr localAnd = new ConstraintConnectiveDescr( ConnectiveType.AND ); BaseDescr original = ccd.getDescrs().remove( parentIdx ); localAnd.getDescrs().add( check ); localAnd.getDescrs().add( original ); ccd.getDescrs().add( parentIdx, localAnd ); } } innerCheck = check.toString() + " && "; String[] nullCheckAndExpr = new String[] { innerCheck, expr }; atomicExpr.setRewrittenExpression( expr ); return nullCheckAndExpr; }
if ( state.backtracking==0 ) { if( buildDescr ) { result = new RelationalExprDescr( (op!=null?op.getText():null), false, null, left, right );
if ( state.backtracking==0 ) { if( buildDescr ) { result = new RelationalExprDescr( (op!=null?input.toString(op.start,op.stop):null), false, null, left, new AtomicExprDescr((right!=null?input.toString(right.start,right.stop):null)) );
(value!=null?value.result:null) : new AtomicExprDescr( (value!=null?input.toString(value.start,value.stop):null) ) ; result = new RelationalExprDescr( (op!=null?op.opr:null), (op!=null?op.negated:false), sa, ((relationalExpression_scope)relationalExpression_stack.peek()).lsd, descr ); if( ((relationalExpression_scope)relationalExpression_stack.peek()).lsd instanceof BindingDescr ) { ((relationalExpression_scope)relationalExpression_stack.peek()).lsd = new AtomicExprDescr( ((BindingDescr)((relationalExpression_scope)relationalExpression_stack.peek()).lsd).getExpression() );
if ( state.backtracking==0 ) { descr = ConstraintConnectiveDescr.newAnd(); RelationalExprDescr rel = new RelationalExprDescr( "!=", false, null, leftDescr, (e1!=null?e1.result:null) ); descr.addOrMerge( rel ); result = descr; if (state.failed) return result; if ( state.backtracking==0 ) { RelationalExprDescr rel = new RelationalExprDescr( "!=", false, null, leftDescr, (e2!=null?e2.result:null) ); descr.addOrMerge( rel ); if ( state.backtracking==0 ) { descr = ConstraintConnectiveDescr.newOr(); RelationalExprDescr rel = new RelationalExprDescr( "==", false, null, leftDescr, (e1!=null?e1.result:null) ); descr.addOrMerge( rel ); result = descr; if (state.failed) return result; if ( state.backtracking==0 ) { RelationalExprDescr rel = new RelationalExprDescr( "==", false, null, leftDescr, (e2!=null?e2.result:null) ); descr.addOrMerge( rel );