Commit 9d874f02 authored by chriseth's avatar chriseth Committed by GitHub

Merge pull request #166 from ethereum/contracttype

Manage contract type
parents 4fb58291 f86c14c8
...@@ -203,6 +203,9 @@ function getStructMembers (type, stateDefinitions, contractName) { ...@@ -203,6 +203,9 @@ function getStructMembers (type, stateDefinitions, contractName) {
for (var dec of state.stateDefinitions) { for (var dec of state.stateDefinitions) {
if (dec.name === 'StructDefinition' && type === contractName + '.' + dec.attributes.name) { if (dec.name === 'StructDefinition' && type === contractName + '.' + dec.attributes.name) {
var offsets = computeOffsets(dec.children, stateDefinitions, contractName) var offsets = computeOffsets(dec.children, stateDefinitions, contractName)
if (!offsets) {
return null
}
return { return {
members: offsets.typesOffsets, members: offsets.typesOffsets,
storageSlots: offsets.endLocation.slot storageSlots: offsets.endLocation.slot
...@@ -244,6 +247,7 @@ function typeClass (fullType) { ...@@ -244,6 +247,7 @@ function typeClass (fullType) {
function parseType (type, stateDefinitions, contractName) { function parseType (type, stateDefinitions, contractName) {
var decodeInfos = { var decodeInfos = {
'address': Address, 'address': Address,
'contract': Address,
'array': Array, 'array': Array,
'bool': Bool, 'bool': Bool,
'bytes': DynamicByteArray, 'bytes': DynamicByteArray,
...@@ -260,7 +264,11 @@ function parseType (type, stateDefinitions, contractName) { ...@@ -260,7 +264,11 @@ function parseType (type, stateDefinitions, contractName) {
console.log('unable to retrieve decode info of ' + type) console.log('unable to retrieve decode info of ' + type)
return null return null
} }
return decodeInfos[currentType](type, stateDefinitions, contractName) if (decodeInfos[currentType]) {
return decodeInfos[currentType](type, stateDefinitions, contractName)
} else {
return null
}
} }
/** /**
......
...@@ -31,6 +31,9 @@ function extractStateVariables (contractName, sourcesList) { ...@@ -31,6 +31,9 @@ function extractStateVariables (contractName, sourcesList) {
} }
var types = states[contractName].stateVariables var types = states[contractName].stateVariables
var offsets = decodeInfo.computeOffsets(types, states, contractName) var offsets = decodeInfo.computeOffsets(types, states, contractName)
if (!offsets) {
return [] // TODO should maybe return an error
}
return offsets.typesOffsets return offsets.typesOffsets
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment