def enterExpression1(self, ctx: JavaParserLabeled.Expression1Context): if self.fields and ctx.expression().getText() == "this": for field in self.fields: if field in ctx.getText(): self.rewriter.replaceSingleToken( token=ctx.expression().primary().start, text="ref" )
def enterExpression1(self, ctx: JavaParserLabeled.Expression1Context): if ctx.IDENTIFIER() is None and ctx.IDENTIFIER().getText() in self.field_that_has_source: field_text = ctx.expression().getText() self.token_stream_rewriter.replace( program_name=self.token_stream_rewriter.DEFAULT_PROGRAM_NAME, from_idx=ctx.start.tokenIndex, to_idx=ctx.stop.tokenIndex, text=field_text )
def exitExpression1(self, ctx: JavaParserLabeled.Expression1Context): if self.symbol_table.FindVariableType( self.scope_handler.getScope(), ctx.expression().getText()) == self.class_identifier: if ctx.children[-1].getText() == self.field_identifier: interval = ctx.IDENTIFIER().getSourceInterval() self.token_stream_rewriter.replaceRange( interval[0], interval[1], self.new_field_identifier) elif self.enter_class: if ctx.expression().getText() == "this" and ctx.children[ -1].getText() == self.field_identifier: interval = ctx.IDENTIFIER().getSourceInterval() self.token_stream_rewriter.replaceRange( interval[0], interval[1], self.new_field_identifier)
def exitExpression1(self, ctx: JavaParserLabeled.Expression1Context): if self.is_safe and self.need_cast and self.variable is not None: # Type casting child = ctx.getChild(0).getChild(0) self.token_stream_rewriter.replaceRange( from_idx=child.start.tokenIndex, to_idx=child.stop.tokenIndex, text=f"(({self.child_class}) {self.variable})") self.need_cast = False
def enterExpression1(self, ctx: JavaParserLabeled.Expression1Context): identifier = ctx.IDENTIFIER() if identifier is not None: if identifier.getText() == self.field_name: # Found field usage! self.token_stream_rewriter.insertBeforeToken( token=ctx.stop, text=self.object_name + ".", program_name=self.token_stream_rewriter. DEFAULT_PROGRAM_NAME)
def exitExpression1(self, ctx: JavaParserLabeled.Expression1Context): if not self.enter_class: return if self.method_no == 0: return current_method = self.method_name[-1] variable_name = ctx.IDENTIFIER().getText() if variable_name not in self.field_dict: return if not current_method in self.field_dict[variable_name]: self.field_dict[variable_name].append(current_method)
def enterExpression1(self, ctx: JavaParserLabeled.Expression1Context): # TODO: Complete this if self.is_other_class: children = ctx.children if len(children) > 2: if children[1].getText() == ".": usage_names = [ usage["identifier"] for usage in self.usages ] left_side = children[0].getText() right_side = ctx.IDENTIFIER() if left_side in usage_names: if right_side is not None: print(f"{right_side} is used attribute") if str(right_side) in self.moved_fields: print( f"Call Rename {self.source_class} --> {self.new_class}" ) else: right_side = ctx.methodCall().getText() print(f"{right_side} is used method")
def exitExpression1(self, ctx: JavaParserLabeled.Expression1Context): if (self.abort): return if (ctx.methodCall() is not None and ctx.methodCall().IDENTIFIER().getText() == self.method_name): if (ctx.expression().getText() == self.class_identifier and self.is_static): interval = ctx.methodCall().IDENTIFIER().getSourceInterval() self.token_stream_rewriter.replaceRange( interval[0], interval[1], self.new_method_name) elif (not self.is_static): if isinstance( ctx.expression(), JavaParserLabeled.Expression0Context) and isinstance( ctx.expression().primary(), JavaParserLabeled.Primary0Context): context = ctx.expression().primary().expression() else: context = ctx.expression() text = context.getText() # type cast type = None if isinstance(context, JavaParserLabeled.Expression5Context): type = context.typeType().getText().split('.')[-1] id = text.split('.')[-1] idx = id.find('[') if (idx != -1): id = id[:idx] elif ("ArrayList" in id): id = id[10:-1] if (self.symbol_table.IsClassName(id) and type is None): return if (type is None): type = self.symbol_table.FindVariableType( self.scope_handler.getScope(), id) if (type is not None and (type == self.class_identifier or type in self.extentions or type in self.implementations)): interval = ctx.methodCall().IDENTIFIER().getSourceInterval( ) self.token_stream_rewriter.replaceRange( interval[0], interval[1], self.new_method_name)
def exitExpression1(self, ctx: JavaParserLabeled.Expression1Context): if self.in_source_class and self.in_selected_package: try: if ctx.parentCtx.getChild(1).getText() in ('=', '+=', '-=', '*=', '/=', '&=', '|=', '^=', '>>=', '>>>=', '<<=', '%=') and \ ctx.parentCtx.getChild(0) == ctx: return except: pass if ctx.getText() == 'this.' + self.field_identifier: new_code = 'this.get' + str.capitalize( self.field_identifier) + '()' self.token_stream_rewriter.replaceRange( ctx.start.tokenIndex, ctx.stop.tokenIndex, new_code)
def enterExpression1(self, ctx: JavaParserLabeled.Expression1Context): if self.in_con: identifier = str(ctx.IDENTIFIER()) if identifier in self.common_sets: self.delete = True
def enterExpression1(self, ctx: JavaParserLabeled.Expression1Context): identifier = ctx.IDENTIFIER() if identifier and ctx.start.line in self.lines and identifier.getText( ) == self.field_name: self.rewriter.replaceSingleToken(token=ctx.stop, text=self.new_name)
def enterExpression1(self, ctx: JavaParserLabeled.Expression1Context): if self.is_package_imported or self.package_identifier is None or self.in_selected_package: for object_name in self.declared_objects_names: if ctx.getText() == object_name + "." + self.field_identifier: self.token_stream_rewriter.replaceIndex( index=ctx.start.tokenIndex, text=self.class_identifier)
def exitExpression1(self, ctx: JavaParserLabeled.Expression1Context): if not self.has_import or not self.need_import: if ctx.expression().getText == self.class_identifier: self.need_import = True