Commit 6698a74e authored by chriseth's avatar chriseth Committed by GitHub

Merge pull request #301 from ethereum/cleanup-compiler-editor

Cleanup the compiler
parents b3831e8b 48d8dcb1
...@@ -452,7 +452,7 @@ var run = function () { ...@@ -452,7 +452,7 @@ var run = function () {
} }
var executionContext = new ExecutionContext() var executionContext = new ExecutionContext()
var compiler = new Compiler(editor, handleImportCall) var compiler = new Compiler(handleImportCall)
var formalVerification = new FormalVerification($('#verificationView'), compiler.event) var formalVerification = new FormalVerification($('#verificationView'), compiler.event)
var offsetToLineColumnConverter = new OffsetToLineColumnConverter(compiler.event) var offsetToLineColumnConverter = new OffsetToLineColumnConverter(compiler.event)
...@@ -483,6 +483,15 @@ var run = function () { ...@@ -483,6 +483,15 @@ var run = function () {
autoCompile = document.querySelector('#autoCompile').checked autoCompile = document.querySelector('#autoCompile').checked
}) })
function runCompiler () {
var files = {}
var target = utils.fileNameFromKey(editor.getCacheFile())
files[target] = editor.getValue()
compiler.compile(files, target)
}
var previousInput = '' var previousInput = ''
var compileTimeout = null var compileTimeout = null
var saveTimeout = null var saveTimeout = null
...@@ -518,21 +527,21 @@ var run = function () { ...@@ -518,21 +527,21 @@ var run = function () {
if (compileTimeout) { if (compileTimeout) {
window.clearTimeout(compileTimeout) window.clearTimeout(compileTimeout)
} }
compileTimeout = window.setTimeout(compiler.compile, 300) compileTimeout = window.setTimeout(runCompiler, 300)
} }
editor.onChangeSetup(editorOnChange) editor.onChangeSetup(editorOnChange)
$('#compile').click(function () { $('#compile').click(function () {
compiler.compile() runCompiler()
}) })
executionContext.event.register('contextChanged', this, function (context) { executionContext.event.register('contextChanged', this, function (context) {
compiler.compile() runCompiler()
}) })
executionContext.event.register('web3EndpointChanged', this, function (context) { executionContext.event.register('web3EndpointChanged', this, function (context) {
compiler.compile() runCompiler()
}) })
compiler.event.register('loadingCompiler', this, function (url, usingWorker) { compiler.event.register('loadingCompiler', this, function (url, usingWorker) {
...@@ -542,7 +551,7 @@ var run = function () { ...@@ -542,7 +551,7 @@ var run = function () {
compiler.event.register('compilerLoaded', this, function (version) { compiler.event.register('compilerLoaded', this, function (version) {
previousInput = '' previousInput = ''
setVersionText(version) setVersionText(version)
compiler.compile() runCompiler()
if (queryParams.get().endpointurl) { if (queryParams.get().endpointurl) {
executionContext.setEndPointUrl(queryParams.get().endpointurl) executionContext.setEndPointUrl(queryParams.get().endpointurl)
...@@ -604,7 +613,7 @@ var run = function () { ...@@ -604,7 +613,7 @@ var run = function () {
var optimize = document.querySelector('#optimize').checked var optimize = document.querySelector('#optimize').checked
queryParams.update({ optimize: optimize }) queryParams.update({ optimize: optimize })
compiler.setOptimize(optimize) compiler.setOptimize(optimize)
compiler.compile() runCompiler()
}) })
// ----------------- version selector------------- // ----------------- version selector-------------
......
...@@ -11,7 +11,7 @@ var EventManager = require('../lib/eventManager') ...@@ -11,7 +11,7 @@ var EventManager = require('../lib/eventManager')
/* /*
trigger compilationFinished, compilerLoaded, compilationStarted trigger compilationFinished, compilerLoaded, compilationStarted
*/ */
function Compiler (editor, handleImportCall) { function Compiler (handleImportCall) {
var self = this var self = this
this.event = new EventManager() this.event = new EventManager()
...@@ -28,8 +28,8 @@ function Compiler (editor, handleImportCall) { ...@@ -28,8 +28,8 @@ function Compiler (editor, handleImportCall) {
optimize = _optimize optimize = _optimize
} }
var internalCompile = function (files, missingInputs) { var internalCompile = function (files, target, missingInputs) {
gatherImports(files, missingInputs, function (error, input) { gatherImports(files, target, missingInputs, function (error, input) {
if (error) { if (error) {
self.lastCompilationResult = null self.lastCompilationResult = null
self.event.trigger('compilationFinished', [false, { 'error': error }, files]) self.event.trigger('compilationFinished', [false, { 'error': error }, files])
...@@ -39,13 +39,9 @@ function Compiler (editor, handleImportCall) { ...@@ -39,13 +39,9 @@ function Compiler (editor, handleImportCall) {
}) })
} }
var compile = function () { var compile = function (files, target) {
self.event.trigger('compilationStarted', []) self.event.trigger('compilationStarted', [])
var input = editor.getValue() internalCompile(files, target)
var files = {}
files[utils.fileNameFromKey(editor.getCacheFile())] = input
internalCompile(files)
} }
this.compile = compile this.compile = compile
...@@ -124,7 +120,7 @@ function Compiler (editor, handleImportCall) { ...@@ -124,7 +120,7 @@ function Compiler (editor, handleImportCall) {
self.event.trigger('compilationFinished', [false, data, source]) self.event.trigger('compilationFinished', [false, data, source])
} else if (missingInputs !== undefined && missingInputs.length > 0) { } else if (missingInputs !== undefined && missingInputs.length > 0) {
// try compiling again with the new set of inputs // try compiling again with the new set of inputs
internalCompile(source.sources, missingInputs) internalCompile(source.sources, source.target, missingInputs)
} else { } else {
data = updateInterface(data) data = updateInterface(data)
...@@ -212,10 +208,10 @@ function Compiler (editor, handleImportCall) { ...@@ -212,10 +208,10 @@ function Compiler (editor, handleImportCall) {
worker.postMessage({cmd: 'loadVersion', data: url}) worker.postMessage({cmd: 'loadVersion', data: url})
} }
function gatherImports (files, importHints, cb) { function gatherImports (files, target, importHints, cb) {
importHints = importHints || [] importHints = importHints || []
if (!compilerAcceptsMultipleFiles) { if (!compilerAcceptsMultipleFiles) {
cb(null, files[editor.getCacheFile()]) cb(null, files[target])
return return
} }
...@@ -250,14 +246,14 @@ function Compiler (editor, handleImportCall) { ...@@ -250,14 +246,14 @@ function Compiler (editor, handleImportCall) {
cb(err) cb(err)
} else { } else {
files[m] = content files[m] = content
gatherImports(files, importHints, cb) gatherImports(files, target, importHints, cb)
} }
}) })
return return
} }
cb(null, { 'sources': files }) cb(null, { 'sources': files, 'target': target })
} }
function truncateVersion (version) { function truncateVersion (version) {
......
...@@ -3,17 +3,14 @@ ...@@ -3,17 +3,14 @@
var test = require('tape') var test = require('tape')
var Compiler = require('../src/app/compiler') var Compiler = require('../src/app/compiler')
var EventManager = require('../src/lib/eventManager')
test('compiler.compile smoke', function (t) { test('compiler.compile smoke', function (t) {
t.plan(1) t.plan(1)
var noop = function () {} var noop = function () {}
var getCacheFile = function () { return 'fakeCacheFile' } var fakeImport = function (url, cb) { cb('Not implemented') }
var fakeEditor = {onChangeSetup: noop, clearAnnotations: noop, getValue: noop, setCacheFileContent: noop, getCacheFile: getCacheFile} var compiler = new Compiler(fakeImport)
var fakeQueryParams = {get: function () { return {} }}
var compiler = new Compiler(fakeEditor, fakeQueryParams, null, null, new EventManager())
compiler.setCompileJSON(noop) compiler.setCompileJSON(noop)
compiler.compile() compiler.compile({ 'test': '' }, 'test')
t.ok(compiler) t.ok(compiler)
}) })
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