public Ust VisitClassDeclaration(JavaParser.ClassDeclarationContext context)
        {
            var typeTypeToken = new TypeTypeLiteral(TypeType.Class,
                                                    context.GetChild <ITerminalNode>(0).Symbol.GetTextSpan());

            var id = (IdToken)Visit(context.IDENTIFIER());

            EntityDeclaration[] typeMembers = context.classBody().classBodyDeclaration()
                                              .Select(dec => Visit(dec) as EntityDeclaration)
                                              .Where(dec => dec != null).ToArray();

            var baseTypes = new List <TypeToken>();

            if (context.typeType() != null)
            {
                baseTypes.Add((TypeToken)Visit(context.typeType()));
            }
            if (context.typeList() != null)
            {
                baseTypes.AddRange(context.typeList().typeType().Select(t => (TypeToken)Visit(t)));
            }

            var result = new TypeDeclaration(typeTypeToken, id, baseTypes, typeMembers, context.GetTextSpan());

            return(result);
        }
Example #2
0
        public override bool VisitClassDeclaration([NotNull] JavaParser.ClassDeclarationContext context)
        {
            ++ClassInterfaceCounter;
            ClassesInterfaces.Add(context.IDENTIFIER().GetText());

            return(base.VisitChildren(context));
        }
Example #3
0
        public override void EnterClassDeclaration(JavaParser.ClassDeclarationContext context)
        {
            string name = context.IDENTIFIER().GetText();

            string headerText = context.GetFullText();

            if (headerText.Contains("{"))
            {
                headerText = headerText.Substring(
                    0,
                    headerText.IndexOf("{", StringComparison.Ordinal));
            }

            ClassInfo newClassInfo;

            if (parentClass != null)
            {
                name = $"{parentClass.className.ShortName}${name}";

                ClassName className = new ClassName(
                    parentClass.className.ContainmentFile(),
                    parentClass.className.ContainmentPackage,
                    name);

                newClassInfo = new ClassInfo(
                    className,
                    new List <MethodInfo>(),
                    new List <FieldInfo>(),
                    AccessFlags.AccPrivate,
                    new List <ClassInfo>(),
                    new SourceCodeSnippet(headerText, SourceCodeLanguage.Java),
                    false);

                parentClass.Children.Add(newClassInfo);
            }
            else
            {
                // top level class
                ClassName className = new ClassName(
                    new FileName(parentFileName),
                    new PackageName(packageFqn),
                    name);

                newClassInfo = new ClassInfo(
                    className,
                    new List <MethodInfo>(),
                    new List <FieldInfo>(),
                    modifier,
                    new List <ClassInfo>(),
                    new SourceCodeSnippet(headerText, SourceCodeLanguage.Java),
                    false);

                OuterClass = newClassInfo;
            }

            ClassBodyListener classBodyListener = new ClassBodyListener(newClassInfo);

            context.classBody().EnterRule(classBodyListener);
        }
Example #4
0
        public override void ExitClassDeclaration([NotNull] JavaParser.ClassDeclarationContext context)
        {
            if (_currentClassModel != null)
            {
                foreach (var method in _currentClassModel.Methods)
                {
                    method.ExtractInnerAndOuterMethodInvocations();
                }
            }

            _methodListener.resetCurrentClass();
            _memberListener.resetCurrentClass();

            _currentClassModel = null;
        }
        public UstNode VisitClassDeclaration(JavaParser.ClassDeclarationContext context)
        {
            var typeTypeToken = new TypeTypeLiteral(TypeType.Class,
                                                    context.GetChild <ITerminalNode>(0).Symbol.GetTextSpan(), FileNode);

            var id = (IdToken)Visit(context.IDENTIFIER());

            EntityDeclaration[] typeMembers = context.classBody().classBodyDeclaration()
                                              .Select(dec => Visit(dec) as EntityDeclaration)
                                              .Where(dec => dec != null).ToArray();

            var result = new TypeDeclaration(typeTypeToken, id, typeMembers, context.GetTextSpan(), FileNode);

            return(result);
        }
Example #6
0
        public override void EnterClassDeclaration([NotNull] JavaParser.ClassDeclarationContext context)
        {
            Logger.Debug("parsing class");

            var inputStream = context.Start.InputStream;

            var interval = new Interval(context.Start.StartIndex, context.Stop.StopIndex);

            _currentClassModel = new Class(context.Identifier()?.GetText(), inputStream.GetText(interval));
            if (_currentComilationUnit != null)
            {
                _currentComilationUnit.AddClass(_currentClassModel);
            }

            _methodListener.setCurrentClass(_currentClassModel);
            _memberListener.setCurrentClass(_currentClassModel);

            InvokeParseInfoUpdate("Finished parsing class: " + _currentClassModel.Name);
        }
Example #7
0
        public override void EnterClassDeclaration(JavaParser.ClassDeclarationContext context)
        {
            string name = context.IDENTIFIER().GetText();

            if (outerClass != null)
            {
                string history = outerClass
                                 .FullyQualified
                                 .Substring(outerClass.FullyQualified.LastIndexOf('/') + 1);
                name = $"{history}${name}";
            }

            string classPackageFqn = string.IsNullOrEmpty(packageFqn)
                ? name
                : $"{packageFqn}.{name}";

            ClassName className = new ClassName($"{parentFileName}|{classPackageFqn}");

            string headerText = context.GetFullText();

            if (headerText.Contains("{"))
            {
                headerText = headerText.Substring(
                    0,
                    headerText.IndexOf("{", StringComparison.Ordinal));
            }

            ClassBodyListener classBodyListener = new ClassBodyListener(className, parentFileName, packageFqn);

            context.classBody().EnterRule(classBodyListener);

            ClassInfo = new ClassInfo(
                className,
                classBodyListener.MethodInfos,
                classBodyListener.FieldInfos,
                modifier,
                classBodyListener.InnerClasses,
                new SourceCodeSnippet(headerText, SourceCodeLanguage.Java),
                false);
        }
Example #8
0
 public override void ExitClassDeclaration([NotNull] JavaParser.ClassDeclarationContext context)
 {
     _classListener.ExitClassDeclaration(context);
 }