本文整理汇总了Python中ufora.native.FORA.getCodeLocation方法的典型用法代码示例。如果您正苦于以下问题:Python FORA.getCodeLocation方法的具体用法?Python FORA.getCodeLocation怎么用?Python FORA.getCodeLocation使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ufora.native.FORA
的用法示例。
在下文中一共展示了FORA.getCodeLocation方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: exceptionCodeLocationsAsJson
# 需要导入模块: from ufora.native import FORA [as 别名]
# 或者: from ufora.native.FORA import getCodeLocation [as 别名]
def exceptionCodeLocationsAsJson(self, stacktraceAndVarsInScope):
hashes = stacktraceAndVarsInScope[0].getStackTrace()
if hashes is None:
return None
codeLocations = [ForaNative.getCodeLocation(h) for h in hashes]
codeLocations = [c for c in codeLocations if c is not None]
def formatCodeLocation(c):
if not c.defPoint.isExternal():
return None
def posToJson(simpleParsePosition):
return {
'characterOffset': simpleParsePosition.rawOffset,
'line': simpleParsePosition.line,
'col': simpleParsePosition.col
}
return {
'path': list(c.defPoint.asExternal.paths),
'range': {
'start': posToJson(c.range.start),
'stop': posToJson(c.range.stop)
}
}
return {
'stacktrace': [
x for x in [formatCodeLocation(c) for c in codeLocations] if x is not None
]
}
示例2: test_extractStacktrace
# 需要导入模块: from ufora.native import FORA [as 别名]
# 或者: from ufora.native.FORA import getCodeLocation [as 别名]
def test_extractStacktrace(self):
text = """fun() {
let x = 0;
let v = [1,2,3]
while (x < 100000) {
x = x + 1
}
(x,v)
}"""
self.runtime = Runtime.getMainRuntime()
#self.dynamicOptimizer = self.runtime.dynamicOptimizer
vdm = FORANative.VectorDataManager(callbackScheduler, Setup.config().maxPageSizeInBytes)
context = ExecutionContext.ExecutionContext(
dataManager = vdm,
allowInterpreterTracing = False
)
context.interruptAfterCycleCount(1000)
context.evaluate(
FORA.extractImplValContainer(FORA.eval(text)),
FORANative.symbol_Call
)
trace = context.extractStacktrace(True)
self.assertTrue(len(trace) == 1)
stacktrace = trace[0][0]
frameData = trace[0][1]
codeLocation = FORANative.getCodeLocation(stacktrace.getIDs()[0])
self.assertTrue(codeLocation is not None)
self.assertTrue(frameData.wasCompiled is False)
self.assertTrue(len(frameData.inScopeValues) == 2)
self.assertTrue([str(x) for x in frameData.inScopeValues.keys] == ['x', 'v'])
values = [frameData.inScopeValues[x] for x in frameData.inScopeValues.keys]
self.assertTrue(values[0].isInt64())
self.assertTrue(values[1].isVector())
context.teardown()
示例3: exceptionCodeLocationsAsJson
# 需要导入模块: from ufora.native import FORA [as 别名]
# 或者: from ufora.native.FORA import getCodeLocation [as 别名]
def exceptionCodeLocationsAsJson(self):
if self.valueIVC.isTuple():
tup = self.valueIVC.getTuple()
if len(tup) != 2:
return None
_, stacktraceAndVarsInScope = self.valueIVC.getTuple()
hashes = stacktraceAndVarsInScope[0].getStackTrace()
if hashes is None:
return None
codeLocations = [ForaNative.getCodeLocation(h) for h in hashes]
def formatCodeLocation(c):
if c is None:
return None
if not c.defPoint.isExternal():
return None
def posToJson(simpleParsePosition):
return {
'characterOffset': simpleParsePosition.rawOffset,
'line': simpleParsePosition.line,
'col': simpleParsePosition.col
}
return {
'path': list(c.defPoint.asExternal.paths),
'range': {
'start': posToJson(c.range.start),
'stop': posToJson(c.range.stop)
}
}
# return [x for x in [formatCodeLocation(c) for c in codeLocations] if x is not None]
return [x for x in [formatCodeLocation(c) for c in codeLocations if c is not None] if x is not None]
else:
return None
示例4: formatStackTraceHash
# 需要导入模块: from ufora.native import FORA [as 别名]
# 或者: from ufora.native.FORA import getCodeLocation [as 别名]
def formatStackTraceHash(hash, valuesInScope, lines=1):
codeLocation = ForaNative.getCodeLocation(hash)
if codeLocation is not None:
return formatCodeLocation(codeLocation, valuesInScope, lines)
else:
return ""