예제 #1
0
        public override void EnterType_(CSharpParser.Type_Context context)
        {
            if (context.base_type().VOID() != null)
            {
                Type = PrimitiveTypeName.Void;
                return;
            }

            if (context.base_type().simple_type() != null)
            {
                var simpleTypeListener = new SimpleTypeListener();
                context.base_type().simple_type().EnterRule(simpleTypeListener);

                Type = simpleTypeListener.TypeName;
            }

            if (context.base_type().class_type() != null)
            {
                ClassName = context.base_type().class_type().GetText();
            }

            if (context.base_type().tuple_type() != null)
            {
                Console.WriteLine("");
                Console.WriteLine("tuple_type " + context.base_type().tuple_type().GetText());
            }
        }
예제 #2
0
        public void GetFirstCommonDescendantToAnyReturnsSelf(PrimitiveTypeName type)
        {
            var result = new StatePrimitive(type).GetFirstCommonDescendantOrNull(StatePrimitive.Any).Name;

            Assert.AreEqual(type, result);
            var reversed = StatePrimitive.Any.GetFirstCommonDescendantOrNull(new StatePrimitive(type)).Name;

            Assert.AreEqual(type, reversed);
        }
예제 #3
0
        public void GetFirstCommonDescedant_returnsNull(PrimitiveTypeName a, PrimitiveTypeName b)
        {
            var result = new StatePrimitive(a).GetFirstCommonDescendantOrNull(new StatePrimitive(b));

            Assert.IsNull(result);
            var revresult = new StatePrimitive(b).GetFirstCommonDescendantOrNull(new StatePrimitive(a));

            Assert.IsNull(revresult);
        }
예제 #4
0
        public void GetLastCommonAncestor(PrimitiveTypeName a, PrimitiveTypeName b, PrimitiveTypeName expected)
        {
            var result = new StatePrimitive(a).GetLastCommonPrimitiveAncestor(new StatePrimitive(b)).Name;

            Assert.AreEqual(expected, result);
            var revresult = new StatePrimitive(b).GetLastCommonPrimitiveAncestor(new StatePrimitive(a)).Name;

            Assert.AreEqual(expected, revresult);
        }
예제 #5
0
        public void GetFirstCommonDescedant(PrimitiveTypeName a, PrimitiveTypeName b, PrimitiveTypeName expected)
        {
            var result = new StatePrimitive(a).GetFirstCommonDescendantOrNull(new StatePrimitive(b))?.Name;

            Assert.AreEqual(expected, result);
            var revresult = new StatePrimitive(b).GetFirstCommonDescendantOrNull(new StatePrimitive(a))?.Name;

            Assert.AreEqual(expected, revresult);
        }
예제 #6
0
 public override void EnterNumeric_type(CSharpParser.Numeric_typeContext context)
 {
     if (context.integral_type() != null)
     {
         if (context.integral_type().INT() != null)
         {
             TypeName = PrimitiveTypeName.Int;
         }
         else if (context.integral_type().BYTE() != null)
         {
             TypeName = PrimitiveTypeName.Byte;
         }
         else if (context.integral_type().CHAR() != null)
         {
             TypeName = PrimitiveTypeName.Char;
         }
         else if (context.integral_type().LONG() != null)
         {
             TypeName = PrimitiveTypeName.Long;
         }
         else if (context.integral_type().UINT() != null)
         {
             TypeName = PrimitiveTypeName.Int;
         }
         else if (context.integral_type().SBYTE() != null)
         {
             TypeName = PrimitiveTypeName.Byte;
         }
         else if (context.integral_type().SHORT() != null)
         {
             TypeName = PrimitiveTypeName.Short;
         }
         else if (context.integral_type().ULONG() != null)
         {
             TypeName = PrimitiveTypeName.Long;
         }
         else if (context.integral_type().USHORT() != null)
         {
             TypeName = PrimitiveTypeName.Short;
         }
     }
     else if (context.floating_point_type() != null)
     {
         if (context.floating_point_type().FLOAT() != null)
         {
             TypeName = PrimitiveTypeName.Float;
         }
         else if (context.floating_point_type().DOUBLE() != null)
         {
             TypeName = PrimitiveTypeName.Double;
         }
     }
 }
예제 #7
0
        public override void EnterSimple_type(CSharpParser.Simple_typeContext context)
        {
            if (context.BOOL() != null)
            {
                TypeName = PrimitiveTypeName.Boolean;
            }
            else if (context.numeric_type() != null)
            {
                var numericTypeListener = new NumericTypeListener();

                context.numeric_type().EnterRule(numericTypeListener);

                TypeName = numericTypeListener.TypeName;
            }
        }
예제 #8
0
            public override void EnterPrimitiveType(JavaParser.PrimitiveTypeContext context)
            {
                if (context.INT() != null)
                {
                    PrimitiveTypeName = TypeName.For("int") as PrimitiveTypeName;
                }

                if (context.BYTE() != null)
                {
                    PrimitiveTypeName = TypeName.For("byte") as PrimitiveTypeName;
                }

                if (context.CHAR() != null)
                {
                    PrimitiveTypeName = TypeName.For("char") as PrimitiveTypeName;
                }

                if (context.LONG() != null)
                {
                    PrimitiveTypeName = TypeName.For("long") as PrimitiveTypeName;
                }

                if (context.FLOAT() != null)
                {
                    PrimitiveTypeName = TypeName.For("float") as PrimitiveTypeName;
                }

                if (context.SHORT() != null)
                {
                    PrimitiveTypeName = TypeName.For("short") as PrimitiveTypeName;
                }

                if (context.DOUBLE() != null)
                {
                    PrimitiveTypeName = TypeName.For("double") as PrimitiveTypeName;
                }

                if (context.BOOLEAN() != null)
                {
                    PrimitiveTypeName = TypeName.For("bool") as PrimitiveTypeName;
                }
            }
예제 #9
0
        public override void EnterPrimitiveType(JavaParser.PrimitiveTypeContext context)
        {
            if (context.INT() != null)
            {
                PrimitiveTypeName = PrimitiveTypeName.Int;
            }

            if (context.BYTE() != null)
            {
                PrimitiveTypeName = PrimitiveTypeName.Byte;
            }

            if (context.CHAR() != null)
            {
                PrimitiveTypeName = PrimitiveTypeName.Char;
            }

            if (context.LONG() != null)
            {
                PrimitiveTypeName = PrimitiveTypeName.Long;
            }

            if (context.FLOAT() != null)
            {
                PrimitiveTypeName = PrimitiveTypeName.Float;
            }

            if (context.SHORT() != null)
            {
                PrimitiveTypeName = PrimitiveTypeName.Short;
            }

            if (context.DOUBLE() != null)
            {
                PrimitiveTypeName = PrimitiveTypeName.Double;
            }

            if (context.BOOLEAN() != null)
            {
                PrimitiveTypeName = PrimitiveTypeName.Boolean;
            }
        }
예제 #10
0
        public override void EnterFieldDeclaration(JavaParser.FieldDeclarationContext context)
        {
            PrimitiveTypeName primitiveTypeName = null;
            string            qualifiedName     = "";

            if (context.typeType() != null)
            {
                TypeTypeListener typeTypeListener = new TypeTypeListener();
                context.typeType().EnterRule(typeTypeListener);
                primitiveTypeName = typeTypeListener.PrimitiveTypeName;
                qualifiedName     = typeTypeListener.QualifiedName;
            }

            List <string> IDs = new List <string>();

            if (context.variableDeclarators() != null)
            {
                VariableDeclaratorsListener variableDeclaratorsListener = new VariableDeclaratorsListener();
                context.variableDeclarators().EnterRule(variableDeclaratorsListener);
                IDs = variableDeclaratorsListener.IDs;
            }

            if (primitiveTypeName == null && string.IsNullOrEmpty(qualifiedName))
            {
                primitiveTypeName = TypeName.For("void") as PrimitiveTypeName;
            }

            string    fieldName = IDs.FirstOrDefault();
            FieldName fieldFqn  = new FieldName(
                parentClass.className,
                fieldName,
                primitiveTypeName != null
                    ? primitiveTypeName.Signature
                    : TypeName.For(qualifiedName).Signature);
            FieldInfo fieldInfo = new FieldInfo(
                fieldFqn,
                parentClass.className,
                AccessFlags.AccPublic,
                new SourceCodeSnippet(context.GetFullText(), SourceCodeLanguage.Java));

            parentClass.Children.Add(fieldInfo);
        }
예제 #11
0
파일: TypeRef.cs 프로젝트: ruo2012/peachpie
        internal static object[] /*!!*/ ToStaticTypeRefs(List <TypeRef> /*!*/ typeRefs, ErrorSink errors, SourceUnit sourceUnit)
        {
            if (typeRefs == null || typeRefs.Count == 0)
            {
                return(ArrayUtils.EmptyObjects);
            }

            object[] result = new object[typeRefs.Count];

            for (int i = 0; i < typeRefs.Count; i++)
            {
                if ((result[i] = typeRefs[i].ToStaticTypeRef(errors, sourceUnit)) == null)
                {
                    if (errors != null)
                    {
                        errors.Add(Errors.GenericParameterMustBeType, sourceUnit, typeRefs[i].Span);
                    }

                    result[i] = new PrimitiveTypeName(QualifiedName.Object);
                }
            }

            return(result);
        }
예제 #12
0
        public override void EnterTypeType(JavaParser.TypeTypeContext context)
        {
            if (context.annotation() != null)
            {
                AnnotationListener annotationListener = new AnnotationListener();
                context.annotation().EnterRule(annotationListener);
                QualifiedName = annotationListener.QualifiedName;
            }

            if (context.classOrInterfaceType() != null)
            {
                ClassOrInterfaceTypeListener classOrInterfaceTypeListener =
                    new ClassOrInterfaceTypeListener();
                context.classOrInterfaceType().EnterRule(classOrInterfaceTypeListener);
                ID = classOrInterfaceTypeListener.id;
            }

            if (context.primitiveType() != null)
            {
                PrimitiveTypeListener primitiveTypeListener = new PrimitiveTypeListener();
                context.primitiveType().EnterRule(primitiveTypeListener);
                PrimitiveTypeName = primitiveTypeListener.PrimitiveTypeName;
            }
        }
예제 #13
0
파일: TypeRef.cs 프로젝트: ruo2012/peachpie
 public PrimitiveTypeRef(Text.Span span, PrimitiveTypeName name)
     : base(span, null)
 {
     this.typeName = name;
 }
예제 #14
0
파일: TypeRef.cs 프로젝트: dw4dev/Phalanger
		internal static object[]/*!!*/ ToStaticTypeRefs(List<TypeRef>/*!*/ typeRefs, ErrorSink errors, SourceUnit sourceUnit)
		{
            if (typeRefs == null || typeRefs.Count == 0)
                return ArrayUtils.EmptyObjects;

			object[] result = new object[typeRefs.Count];

			for (int i = 0; i < typeRefs.Count; i++)
			{
                if ((result[i] = typeRefs[i].ToStaticTypeRef(errors, sourceUnit)) == null)
				{
					if (errors != null)
                        errors.Add(Errors.GenericParameterMustBeType, sourceUnit, typeRefs[i].Span);

					result[i] = new PrimitiveTypeName(QualifiedName.Object);
				}
			}

			return result;
		}
예제 #15
0
파일: TypeRef.cs 프로젝트: dw4dev/Phalanger
		public PrimitiveTypeRef(Text.Span span, PrimitiveTypeName name)
			: base(span, null)
		{
            this.typeName = name;
		}
예제 #16
0
 public StatePrimitive(PrimitiveTypeName name)
 {
     Name = name;
 }
예제 #17
0
		public PrimitiveTypeRef(Position position, PrimitiveTypeName name)
			: base(position, null)
		{
            this.typeName = name;
		}
예제 #18
0
 public Primitive(PrimitiveTypeName name)
 {
     Name = name;
 }
예제 #19
0
 public TypeHintValue(PrimitiveTypeName hint)
     : this((object)hint)
 {
 }
예제 #20
0
        public void GetLastCommonAncestorToAnyReturnsAny(PrimitiveTypeName type)
        {
            var result = new StatePrimitive(type).GetLastCommonPrimitiveAncestor(StatePrimitive.Any);

            Assert.AreEqual(StatePrimitive.Any, result);
        }
예제 #21
0
 public void CanBeImplicitlyConverted_returnsFalse(PrimitiveTypeName from, PrimitiveTypeName to)
 {
     Assert.IsFalse(new StatePrimitive(from).CanBeImplicitlyConvertedTo(new StatePrimitive(to)));
 }
예제 #22
0
        public void GetLastCommonAncestorToSelfReturnsSelf(PrimitiveTypeName type)
        {
            var result = new StatePrimitive(type).GetLastCommonPrimitiveAncestor(new StatePrimitive(type)).Name;

            Assert.AreEqual(type, result);
        }