Skip to content

Commit c72be2d

Browse files
committed
Throw on pre-0.4.11 Solidity versions in lib-sourcify
1 parent 120d8b9 commit c72be2d

File tree

3 files changed

+20
-20
lines changed

3 files changed

+20
-20
lines changed

packages/lib-sourcify/src/Compilation/CompilationTypes.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ export type CompilationLanguage = 'Solidity' | 'Vyper';
3535
export type CompilationErrorCode =
3636
| 'cannot_generate_cbor_auxdata_positions'
3737
| 'invalid_compiler_version'
38+
| 'unsupported_compiler_version'
3839
| 'contract_not_found_in_compiler_output'
3940
| 'compiler_error'
4041
| 'no_compiler_output'

packages/lib-sourcify/src/Compilation/SolidityCompilation.ts

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,14 @@ export class SolidityCompilation extends AbstractCompilation {
4242
public compilationTarget: CompilationTarget,
4343
) {
4444
super(jsonInput);
45+
46+
// Throw error for unsupported compiler versions
47+
if (semver.lt(this.compilerVersion, '0.4.11')) {
48+
throw new CompilationError({
49+
code: 'unsupported_compiler_version',
50+
});
51+
}
52+
4553
this.initSolidityJsonInput();
4654
}
4755

packages/lib-sourcify/test/Compilation/SolidityCompilation.spec.ts

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,10 @@ import path from 'path';
44
import fs from 'fs';
55
import { SolidityCompilation } from '../../src/Compilation/SolidityCompilation';
66
import { solc } from '../utils';
7-
import { CompilationTarget } from '../../src/Compilation/CompilationTypes';
7+
import {
8+
CompilationTarget,
9+
CompilationError,
10+
} from '../../src/Compilation/CompilationTypes';
811
import {
912
SolidityJsonInput,
1013
Metadata,
@@ -399,7 +402,7 @@ describe('SolidityCompilation', () => {
399402
}
400403
});
401404

402-
it('should handle very old Solidity versions (< 0.4.7) with no auxdata', async () => {
405+
it('should throw CompilationError for unsupported compiler versions < 0.4.11', () => {
403406
const contractPath = path.join(__dirname, '..', 'sources', 'pre-0.4.11');
404407
const sources = {
405408
'Simple.sol': {
@@ -411,10 +414,6 @@ describe('SolidityCompilation', () => {
411414
language: 'Solidity',
412415
sources,
413416
settings: {
414-
optimizer: {
415-
enabled: false,
416-
runs: 200,
417-
},
418417
outputSelection: {
419418
'*': {
420419
'*': ['*'],
@@ -423,21 +422,13 @@ describe('SolidityCompilation', () => {
423422
},
424423
};
425424

426-
const compilation = new SolidityCompilation(
427-
solc,
428-
'0.4.0+commit.acd334c9',
429-
solcJsonInput,
430-
{
425+
expect(() => {
426+
new SolidityCompilation(solc, '0.4.6+commit.2dabbdf0', solcJsonInput, {
431427
name: 'Simple',
432428
path: 'Simple.sol',
433-
},
434-
);
435-
436-
await compilation.compile();
437-
await compilation.generateCborAuxdataPositions();
438-
439-
// For versions < 0.4.7, no auxdata should exist
440-
expect(compilation.runtimeBytecodeCborAuxdata).to.deep.equal({});
441-
expect(compilation.creationBytecodeCborAuxdata).to.deep.equal({});
429+
});
430+
})
431+
.to.throw(CompilationError)
432+
.with.property('code', 'unsupported_compiler_version');
442433
});
443434
});

0 commit comments

Comments
 (0)