@@ -89,7 +89,7 @@ private void analyzeBinaryWhetehrMathRoot (CtBinaryOperator operatorunderstudy,
89
89
whethermathroot =false ;
90
90
}
91
91
92
- writeGroupedInfo (context , Integer .toString (operatorindex )+"_" +operatorunderstudy , CodeFeatures .O5_IS_MATH_ROOT ,
92
+ writeGroupedInfo (context , Integer .toString (operatorindex )+"_" +getStringRepr ( operatorunderstudy ) , CodeFeatures .O5_IS_MATH_ROOT ,
93
93
whethermathroot , "FEATURES_BINARYOPERATOR" );
94
94
}
95
95
@@ -122,7 +122,7 @@ private void analyzeBinaryLogicalOperator(CtBinaryOperator operatorunderstudy, i
122
122
}
123
123
}
124
124
125
- writeGroupedInfo (context , Integer .toString (operatorindex )+"_" +operatorunderstudy , CodeFeatures .O2_LOGICAL_CONTAIN_NOT ,
125
+ writeGroupedInfo (context , Integer .toString (operatorindex )+"_" +getStringRepr ( operatorunderstudy ) , CodeFeatures .O2_LOGICAL_CONTAIN_NOT ,
126
126
whethercontainnotoperator , "FEATURES_BINARYOPERATOR" );
127
127
128
128
}
@@ -166,27 +166,75 @@ private void analyzeBinaryOperatorKind(CtBinaryOperator operatorunderstudy, int
166
166
167
167
for (int index =0 ; index <binoperatortype .size (); index ++) {
168
168
CodeFeatures cerainfeature = binoperatortype .get (index );
169
-
169
+
170
+ final String operatorunderstudyStr = getStringRepr (operatorunderstudy );
170
171
if (cerainfeature .toString ().endsWith (operatorstring .toUpperCase ()))
171
- writeGroupedInfo (context , Integer .toString (operatorindex )+"_" +operatorunderstudy , cerainfeature ,
172
+ writeGroupedInfo (context , Integer .toString (operatorindex )+"_" + operatorunderstudyStr , cerainfeature ,
172
173
true , "FEATURES_BINARYOPERATOR" );
173
- else writeGroupedInfo (context , Integer .toString (operatorindex )+"_" +operatorunderstudy , cerainfeature ,
174
+ else writeGroupedInfo (context , Integer .toString (operatorindex )+"_" + operatorunderstudyStr , cerainfeature ,
174
175
false , "FEATURES_BINARYOPERATOR" );
175
176
}
176
177
}
177
-
178
+
179
+ public static String getStringRepr (CtElement operatorunderstudy ) {
180
+ // workaround for
181
+ // at spoon.support.reflect.reference.CtTypeReferenceImpl.getAccessType(CtTypeReferenceImpl.java:774)
182
+ // at spoon.reflect.visitor.ImportAnalyzer$ScannerListener.enter(ImportAnalyzer.java:135)
183
+ // at spoon.reflect.visitor.EarlyTerminatingScanner.scan(EarlyTerminatingScanner.java:124)
184
+ // at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:184)
185
+ // at spoon.reflect.visitor.EarlyTerminatingScanner.scan(EarlyTerminatingScanner.java:106)
186
+ // at spoon.reflect.visitor.CtScanner.visitCtTypeReference(CtScanner.java:813)
187
+ // at spoon.support.reflect.reference.CtTypeReferenceImpl.accept(CtTypeReferenceImpl.java:79)
188
+ // at spoon.reflect.visitor.EarlyTerminatingScanner.doScan(EarlyTerminatingScanner.java:145)
189
+ // at spoon.reflect.visitor.EarlyTerminatingScanner.scan(EarlyTerminatingScanner.java:127)
190
+ // at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:184)
191
+ // at spoon.reflect.visitor.EarlyTerminatingScanner.scan(EarlyTerminatingScanner.java:106)
192
+ // at spoon.reflect.visitor.CtScanner.visitCtTypeAccess(CtScanner.java:825)
193
+ // at spoon.support.reflect.code.CtTypeAccessImpl.accept(CtTypeAccessImpl.java:28)
194
+ // at spoon.reflect.visitor.EarlyTerminatingScanner.doScan(EarlyTerminatingScanner.java:145)
195
+ // at spoon.reflect.visitor.EarlyTerminatingScanner.scan(EarlyTerminatingScanner.java:127)
196
+ // at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:184)
197
+ // at spoon.reflect.visitor.EarlyTerminatingScanner.scan(EarlyTerminatingScanner.java:106)
198
+ // at spoon.reflect.visitor.EarlyTerminatingScanner.scan(EarlyTerminatingScanner.java:83)
199
+ // at spoon.reflect.visitor.CtScanner.visitCtInvocation(CtScanner.java:528)
200
+ // at spoon.support.reflect.code.CtInvocationImpl.accept(CtInvocationImpl.java:46)
201
+ // at spoon.reflect.visitor.EarlyTerminatingScanner.doScan(EarlyTerminatingScanner.java:145)
202
+ // at spoon.reflect.visitor.EarlyTerminatingScanner.scan(EarlyTerminatingScanner.java:127)
203
+ // at spoon.reflect.visitor.CtScanner.scan(CtScanner.java:184)
204
+ // at spoon.reflect.visitor.EarlyTerminatingScanner.scan(EarlyTerminatingScanner.java:106)
205
+ // at spoon.reflect.visitor.CtScanner.visitCtBinaryOperator(CtScanner.java:312)
206
+ // at spoon.support.reflect.code.CtBinaryOperatorImpl.accept(CtBinaryOperatorImpl.java:34)
207
+ // at spoon.reflect.visitor.EarlyTerminatingScanner.doScan(EarlyTerminatingScanner.java:145)
208
+ // at spoon.reflect.visitor.EarlyTerminatingScanner.scan(EarlyTerminatingScanner.java:127)
209
+ // at spoon.reflect.visitor.ImportAnalyzer.process(ImportAnalyzer.java:48)
210
+ // at spoon.reflect.visitor.ForceFullyQualifiedProcessor.process(ForceFullyQualifiedProcessor.java:28)
211
+ // at spoon.reflect.visitor.DefaultJavaPrettyPrinter.applyPreProcessors(DefaultJavaPrettyPrinter.java:2136)
212
+ // at spoon.reflect.visitor.DefaultJavaPrettyPrinter.printElement(DefaultJavaPrettyPrinter.java:281)
213
+ // at spoon.support.reflect.declaration.CtElementImpl.toString(CtElementImpl.java:295)
214
+ // at java.base/java.lang.StringConcatHelper.stringOf(StringConcatHelper.java:453)
215
+
216
+ try {
217
+ return operatorunderstudy .toString ();
218
+ } catch (Exception e ) {
219
+ // fake string, please open an issue if this is a problem
220
+ return "FIXME_oefa" ;
221
+ }
222
+ }
223
+
178
224
//icse15dataset: 1367617, 267239, 597123, 1348493, 614068, 306964, 902094, 410960, 1456710, 1458106
179
225
private void analyzeBinaryOperatorInvolveNull (CtBinaryOperator operatorunderstudy , int operatorindex , Cntx <Object > context ) {
180
226
181
227
boolean whethercontainnull = false ;
182
228
183
229
CtExpression leftexpression = operatorunderstudy .getLeftHandOperand ();
184
230
CtExpression rightexpression = operatorunderstudy .getRightHandOperand ();
185
-
186
- if (leftexpression .toString ().trim ().equals ("null" ) || rightexpression .toString ().trim ().equals ("null" ))
231
+
232
+ final String leftStr = getStringRepr (leftexpression );
233
+ final String rightStr = getStringRepr (rightexpression );
234
+ if (leftStr .trim ().equals ("null" ) || rightStr .trim ().equals ("null" ))
187
235
whethercontainnull = true ;
188
236
189
- writeGroupedInfo (context , Integer .toString (operatorindex )+"_" +operatorunderstudy , CodeFeatures .O3_CONTAIN_NULL ,
237
+ writeGroupedInfo (context , Integer .toString (operatorindex )+"_" +getStringRepr ( operatorunderstudy ) , CodeFeatures .O3_CONTAIN_NULL ,
190
238
whethercontainnull , "FEATURES_BINARYOPERATOR" );
191
239
192
240
}
@@ -199,15 +247,17 @@ private void analyzeBinaryOperatorInvolve01 (CtBinaryOperator operatorunderstudy
199
247
200
248
CtExpression leftexpression = operatorunderstudy .getLeftHandOperand ();
201
249
CtExpression rightexpression = operatorunderstudy .getRightHandOperand ();
202
-
203
- if (leftexpression .toString ().trim ().equals ("0" ) || leftexpression .toString ().trim ().equals ("0.0" ) ||
204
- leftexpression .toString ().trim ().equals ("1.0" ) || leftexpression .toString ().trim ().equals ("1" )
205
- || rightexpression .toString ().trim ().equals ("0" ) || rightexpression .toString ().trim ().equals ("0.0" ) ||
206
- rightexpression .toString ().trim ().equals ("1.0" ) || rightexpression .toString ().trim ().equals ("1" )
207
- || leftexpression .toString ().trim ().endsWith ("1" ) || rightexpression .toString ().trim ().endsWith ("1" ))
250
+
251
+ final String leftStr = getStringRepr (leftexpression );
252
+ final String rightStr = getStringRepr (rightexpression );
253
+ if (leftStr .trim ().equals ("0" ) || leftStr .trim ().equals ("0.0" ) ||
254
+ leftStr .trim ().equals ("1.0" ) || leftStr .trim ().equals ("1" )
255
+ || rightStr .trim ().equals ("0" ) || rightStr .trim ().equals ("0.0" ) ||
256
+ rightStr .trim ().equals ("1.0" ) || rightStr .trim ().equals ("1" )
257
+ || leftStr .trim ().endsWith ("1" ) || rightStr .trim ().endsWith ("1" ))
208
258
whethercontain01 = true ;
209
259
210
- writeGroupedInfo (context , Integer .toString (operatorindex )+"_" +operatorunderstudy , CodeFeatures .O3_CONTAIN_01 ,
260
+ writeGroupedInfo (context , Integer .toString (operatorindex )+"_" +getStringRepr ( operatorunderstudy ) , CodeFeatures .O3_CONTAIN_01 ,
211
261
whethercontain01 , "FEATURES_BINARYOPERATOR" );
212
262
}
213
263
@@ -224,7 +274,7 @@ private void analyzeBinaryOperatorCompareInCondition (CtElement wholeoriginal, C
224
274
whethercompareincondition = true ;
225
275
}
226
276
227
- writeGroupedInfo (context , Integer .toString (operatorindex )+"_" +operatorunderstudy , CodeFeatures .O4_COMPARE_IN_CONDITION ,
277
+ writeGroupedInfo (context , Integer .toString (operatorindex )+"_" +getStringRepr ( operatorunderstudy ) , CodeFeatures .O4_COMPARE_IN_CONDITION ,
228
278
whethercompareincondition , "FEATURES_BINARYOPERATOR" );
229
279
}
230
280
}
0 commit comments