Ejemplo n.º 1
0
 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"
                 )
Ejemplo n.º 2
0
 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
         )
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
 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
Ejemplo n.º 5
0
 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)
Ejemplo n.º 6
0
 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)
Ejemplo n.º 7
0
 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")
Ejemplo n.º 8
0
    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)
Ejemplo n.º 9
0
 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)
Ejemplo n.º 10
0
 def enterExpression1(self, ctx: JavaParserLabeled.Expression1Context):
     if self.in_con:
         identifier = str(ctx.IDENTIFIER())
         if identifier in self.common_sets:
             self.delete = True
Ejemplo n.º 11
0
 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)
Ejemplo n.º 12
0
 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)
Ejemplo n.º 13
0
 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