Exemple #1
0
    def testMangleFunctionNameClasses(self):
        package = ir.Package(ids.TARGET_PACKAGE_ID)
        Local = package.addClass(Name(["local", "Local"]), typeParameters=[])
        P = package.addTypeParameter(Local, Name(["P"]))
        Q = package.addTypeParameter(Local, Name(["Q"]))
        otherPackage = ir.Package(name=Name(["foo", "bar", "baz"]))
        otherPackage.id.index = 0
        Foreign = otherPackage.addClass(Name(["foreign", "Foreign"]),
                                        typeParameters=[])
        Foreign.id.packageId = otherPackage.id
        S = otherPackage.addTypeParameter(Foreign, Name(["S"]))
        T = otherPackage.addTypeParameter(Foreign, Name(["T"]))
        package.dependencies = [
            ir.PackageDependency(otherPackage.name, None, None)
        ]

        X = package.addTypeParameter(None,
                                     Name(["X"]),
                                     upperBound=getRootClassType(),
                                     lowerBound=getNothingClassType(),
                                     flags=frozenset([STATIC]))
        XType = VariableType(X)
        Y = package.addTypeParameter(None,
                                     Name(["Y"]),
                                     upperBound=getRootClassType(),
                                     lowerBound=getNothingClassType())
        YType = VariableType(Y, frozenset([NULLABLE_TYPE_FLAG]))
        LocalType = ClassType(Local, (XType, YType))
        ForeignType = ClassType(Foreign, (YType, XType),
                                frozenset([NULLABLE_TYPE_FLAG]))
        BuiltinType = getRootClassType()

        f = package.addFunction(
            Name(["quux"]),
            typeParameters=[X, Y],
            parameterTypes=[LocalType, ForeignType, BuiltinType])
        expected = "quux[s<C::Object>C::Nothing,<C::Object>C::Nothing](C:local.Local[V0,V1?],Cfoo.bar.baz:foreign.Foreign[V1?,V0]?,C::Object)"
        self.assertEquals(expected, ir.mangleFunctionShortName(f, package))
Exemple #2
0
 def testFromStringWithBoth(self):
     dep = ir.PackageDependency.fromString("foo.bar:1.2-3.4")
     expected = ir.PackageDependency(Name(["foo", "bar"]),
                                     ir.PackageVersion([1, 2]),
                                     ir.PackageVersion([3, 4]))
     self.assertNameAndVersionEquals(expected, dep)
Exemple #3
0
 def testFromStringBasic(self):
     dep = ir.PackageDependency.fromString("foo.bar")
     expected = ir.PackageDependency(Name(["foo", "bar"]), None, None)
     self.assertNameAndVersionEquals(expected, dep)