Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
G
Geth-Modification
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
张蕾
Geth-Modification
Commits
1064e328
Commit
1064e328
authored
6 years ago
by
JoranHonig
Committed by
Felix Lange
6 years ago
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
common/compiler: capture runtime code and source maps (#18020)
parent
a5dc0878
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
16 additions
and
8 deletions
+16
-8
solidity.go
common/compiler/solidity.go
+16
-8
No files found.
common/compiler/solidity.go
View file @
1064e328
...
...
@@ -31,14 +31,15 @@ import (
var
versionRegexp
=
regexp
.
MustCompile
(
`([0-9]+)\.([0-9]+)\.([0-9]+)`
)
// Contract contains information about a compiled contract, alongside its code.
// Contract contains information about a compiled contract, alongside its code
and runtime code
.
type
Contract
struct
{
Code
string
`json:"code"`
Info
ContractInfo
`json:"info"`
Code
string
`json:"code"`
RuntimeCode
string
`json:"runtime-code"`
Info
ContractInfo
`json:"info"`
}
// ContractInfo contains information about a compiled contract, including access
// to the ABI definition, user and developer docs, and metadata.
// to the ABI definition,
source mapping,
user and developer docs, and metadata.
//
// Depending on the source, language version, compiler version, and compiler
// options will provide information about how the contract was compiled.
...
...
@@ -48,6 +49,8 @@ type ContractInfo struct {
LanguageVersion
string
`json:"languageVersion"`
CompilerVersion
string
`json:"compilerVersion"`
CompilerOptions
string
`json:"compilerOptions"`
SrcMap
string
`json:"srcMap"`
SrcMapRuntime
string
`json:"srcMapRuntime"`
AbiDefinition
interface
{}
`json:"abiDefinition"`
UserDoc
interface
{}
`json:"userDoc"`
DeveloperDoc
interface
{}
`json:"developerDoc"`
...
...
@@ -63,14 +66,16 @@ type Solidity struct {
// --combined-output format
type
solcOutput
struct
{
Contracts
map
[
string
]
struct
{
Bin
,
Abi
,
Devdoc
,
Userdoc
,
Metadata
string
BinRuntime
string
`json:"bin-runtime"`
SrcMapRuntime
string
`json:"srcmap-runtime"`
Bin
,
SrcMap
,
Abi
,
Devdoc
,
Userdoc
,
Metadata
string
}
Version
string
}
func
(
s
*
Solidity
)
makeArgs
()
[]
string
{
p
:=
[]
string
{
"--combined-json"
,
"bin,abi,userdoc,devdoc"
,
"--combined-json"
,
"bin,
bin-runtime,srcmap,srcmap-runtime,
abi,userdoc,devdoc"
,
"--optimize"
,
// code optimizer switched on
}
if
s
.
Major
>
0
||
s
.
Minor
>
4
||
s
.
Patch
>
6
{
...
...
@@ -157,7 +162,7 @@ func (s *Solidity) run(cmd *exec.Cmd, source string) (map[string]*Contract, erro
// provided source, language and compiler version, and compiler options are all
// passed through into the Contract structs.
//
// The solc output is expected to contain ABI, user docs, and dev docs.
// The solc output is expected to contain ABI,
source mapping,
user docs, and dev docs.
//
// Returns an error if the JSON is malformed or missing data, or if the JSON
// embedded within the JSON is malformed.
...
...
@@ -184,13 +189,16 @@ func ParseCombinedJSON(combinedJSON []byte, source string, languageVersion strin
return
nil
,
fmt
.
Errorf
(
"solc: error reading dev doc: %v"
,
err
)
}
contracts
[
name
]
=
&
Contract
{
Code
:
"0x"
+
info
.
Bin
,
Code
:
"0x"
+
info
.
Bin
,
RuntimeCode
:
"0x"
+
info
.
BinRuntime
,
Info
:
ContractInfo
{
Source
:
source
,
Language
:
"Solidity"
,
LanguageVersion
:
languageVersion
,
CompilerVersion
:
compilerVersion
,
CompilerOptions
:
compilerOptions
,
SrcMap
:
info
.
SrcMap
,
SrcMapRuntime
:
info
.
SrcMapRuntime
,
AbiDefinition
:
abi
,
UserDoc
:
userdoc
,
DeveloperDoc
:
devdoc
,
...
...
This diff is collapsed.
Click to expand it.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment