Esempio n. 1
0
 def testFromStringChars(self):
     name = Name.fromString("||")
     self.assertEquals(Name(["||"]), name)
     self.assertRaises(ValueError,
                       Name.fromString,
                       "||",
                       isPackageName=True)
Esempio n. 2
0
 def infoAndScopeWithPackageNames(self, args):
     packageNameFromString = lambda s: Name.fromString(s, isPackageName=True)
     names = map(packageNameFromString, args)
     package = Package(id=TARGET_PACKAGE_ID)
     packageLoader = FakePackageLoader(names)
     info = CompileInfo(None, package, packageLoader)
     scope = PackageScope(PACKAGE_SCOPE_ID, None, info, names, [], None)
     return info, scope
Esempio n. 3
0
    def readHeader(self):
        headerSize = struct.calcsize(HEADER_FORMAT)
        headerBytes = self.inFile.read(headerSize)
        headers = struct.unpack(HEADER_FORMAT, headerBytes)
        magic, major, minor = headers[0:3]
        if magic != MAGIC or major != MAJOR_VERSION or minor != MINOR_VERSION:
            raise IOError("package headers don't look valid")

        flags = headers[3]

        stringCount = headers[4]
        self.package.strings = [None] * stringCount

        nameCount = headers[5]
        self.package.names = [None] * nameCount

        # We pre-allocate top-level definitions so they can point to each other if we read
        # them out of order. This is particularly important for type definitions.
        globalCount = headers[6]
        self.package.globals = self.createEmptyGlobalList(
            globalCount, self.package.id)

        functionCount = headers[7]
        self.package.functions = self.createEmptyFunctionList(
            functionCount, self.package.id)

        classCount = headers[8]
        self.package.classes = self.createEmptyClassList(
            classCount, self.package.id)

        traitCount = headers[9]
        self.package.traits = self.createEmptyTraitList(
            traitCount, self.package.id)

        depCount = headers[10]
        self.package.dependencies = [None] * depCount

        entryFunctionIndex = headers[11]
        if entryFunctionIndex != -1:
            if entryFunctionIndex < 0 or entryFunctionIndex >= len(
                    self.package.functions):
                raise IOError("invalid entry function index")
            self.package.entryFunction = self.package.functions[
                entryFunctionIndex]
        initFunctionIndex = headers[12]
        if initFunctionIndex != -1:
            if initFunctionIndex < 0 or initFunctionIndex >= len(
                    self.package.functions):
                raise IOError("invalid init function index")
            self.package.initFunction = self.package.functions[
                initFunctionIndex]

        nameStr = self.readString()
        self.package.name = Name.fromString(nameStr, isPackageName=True)
        versionStr = self.readString()
        self.package.version = ir.PackageVersion.fromString(versionStr)
        self.package.id.name = self.package.name
Esempio n. 4
0
 def testFunctionTypeParameterStatic(self):
     source = "def f[static T] = ()"
     info = self.analyzeFromSource(source)
     T = info.package.findTypeParameter(name="f.T")
     self.assertEquals(Name.fromString("f.T"), T.name)
     self.assertEquals(frozenset([STATIC]), T.flags)
     f = info.package.findFunction(name="f")
     self.assertEquals(1, len(f.typeParameters))
     self.assertIs(T, f.typeParameters[0])
     self.assertEquals(0, T.index)
Esempio n. 5
0
 def testFromStringChars(self):
     name = Name.fromString("||")
     self.assertEquals(Name(["||"]), name)
     self.assertRaises(ValueError, Name.fromString, "||", isPackageName=True)
Esempio n. 6
0
 def testFromStringBasic(self):
     name = Name.fromString("foo")
     self.assertEquals(Name(["foo"]), name)
     name = Name.fromString("foo.bar.baz")
     self.assertEquals(Name(["foo", "bar", "baz"]), name)
Esempio n. 7
0
 def testFromStringBasic(self):
     name = Name.fromString("foo")
     self.assertEquals(Name(["foo"]), name)
     name = Name.fromString("foo.bar.baz")
     self.assertEquals(Name(["foo", "bar", "baz"]), name)