Skip to content

Commit bc154c5

Browse files
Janthermattiaerre
andauthored
Index Range Access (#271)
* Index Range Access * removing WIP test * add newline * fix snap Co-authored-by: mattia richetto <mattia.richetto@gmail.com>
1 parent 51d9f29 commit bc154c5

File tree

10 files changed

+65
-8
lines changed

10 files changed

+65
-8
lines changed

__tests__/nodes/__snapshots__/index.test.js.snap

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ Array [
3838
"IfStatement",
3939
"ImportDirective",
4040
"IndexAccess",
41+
"IndexRangeAccess",
4142
"InheritanceSpecifier",
4243
"InlineAssemblyStatement",
4344
"LabelDefinition",

scripts/__snapshots__/makeData.test.js.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ exports[`makeData to match snapshot for nodes 1`] = `
1313
1414
/* eslint-disable global-require */
1515
16-
module.exports = {ArrayTypeName:require('./ArrayTypeName.js'),AssemblyAssignment:require('./AssemblyAssignment.js'),AssemblyBlock:require('./AssemblyBlock.js'),AssemblyCall:require('./AssemblyCall.js'),AssemblyCase:require('./AssemblyCase.js'),AssemblyFor:require('./AssemblyFor.js'),AssemblyFunctionDefinition:require('./AssemblyFunctionDefinition.js'),AssemblyIf:require('./AssemblyIf.js'),AssemblyLocalDefinition:require('./AssemblyLocalDefinition.js'),AssemblySwitch:require('./AssemblySwitch.js'),BinaryOperation:require('./BinaryOperation.js'),Block:require('./Block.js'),BooleanLiteral:require('./BooleanLiteral.js'),BreakStatement:require('./BreakStatement.js'),CatchClause:require('./CatchClause.js'),Conditional:require('./Conditional.js'),ContinueStatement:require('./ContinueStatement.js'),ContractDefinition:require('./ContractDefinition.js'),DecimalNumber:require('./DecimalNumber.js'),DoWhileStatement:require('./DoWhileStatement.js'),ElementaryTypeName:require('./ElementaryTypeName.js'),EmitStatement:require('./EmitStatement.js'),EnumDefinition:require('./EnumDefinition.js'),EnumValue:require('./EnumValue.js'),EventDefinition:require('./EventDefinition.js'),ExpressionStatement:require('./ExpressionStatement.js'),ForStatement:require('./ForStatement.js'),FunctionCall:require('./FunctionCall.js'),FunctionDefinition:require('./FunctionDefinition.js'),FunctionTypeName:require('./FunctionTypeName.js'),HexLiteral:require('./HexLiteral.js'),HexNumber:require('./HexNumber.js'),Identifier:require('./Identifier.js'),IfStatement:require('./IfStatement.js'),ImportDirective:require('./ImportDirective.js'),IndexAccess:require('./IndexAccess.js'),InheritanceSpecifier:require('./InheritanceSpecifier.js'),InlineAssemblyStatement:require('./InlineAssemblyStatement.js'),LabelDefinition:require('./LabelDefinition.js'),Mapping:require('./Mapping.js'),MemberAccess:require('./MemberAccess.js'),ModifierDefinition:require('./ModifierDefinition.js'),ModifierInvocation:require('./ModifierInvocation.js'),NewExpression:require('./NewExpression.js'),NumberLiteral:require('./NumberLiteral.js'),PragmaDirective:require('./PragmaDirective.js'),ReturnStatement:require('./ReturnStatement.js'),SourceUnit:require('./SourceUnit.js'),StateVariableDeclaration:require('./StateVariableDeclaration.js'),StringLiteral:require('./StringLiteral.js'),StructDefinition:require('./StructDefinition.js'),ThrowStatement:require('./ThrowStatement.js'),TryStatement:require('./TryStatement.js'),TupleExpression:require('./TupleExpression.js'),TypeNameExpression:require('./TypeNameExpression.js'),UnaryOperation:require('./UnaryOperation.js'),UserDefinedTypeName:require('./UserDefinedTypeName.js'),UsingForDeclaration:require('./UsingForDeclaration.js'),VariableDeclaration:require('./VariableDeclaration.js'),VariableDeclarationStatement:require('./VariableDeclarationStatement.js'),WhileStatement:require('./WhileStatement.js')};"
16+
module.exports = {ArrayTypeName:require('./ArrayTypeName.js'),AssemblyAssignment:require('./AssemblyAssignment.js'),AssemblyBlock:require('./AssemblyBlock.js'),AssemblyCall:require('./AssemblyCall.js'),AssemblyCase:require('./AssemblyCase.js'),AssemblyFor:require('./AssemblyFor.js'),AssemblyFunctionDefinition:require('./AssemblyFunctionDefinition.js'),AssemblyIf:require('./AssemblyIf.js'),AssemblyLocalDefinition:require('./AssemblyLocalDefinition.js'),AssemblySwitch:require('./AssemblySwitch.js'),BinaryOperation:require('./BinaryOperation.js'),Block:require('./Block.js'),BooleanLiteral:require('./BooleanLiteral.js'),BreakStatement:require('./BreakStatement.js'),CatchClause:require('./CatchClause.js'),Conditional:require('./Conditional.js'),ContinueStatement:require('./ContinueStatement.js'),ContractDefinition:require('./ContractDefinition.js'),DecimalNumber:require('./DecimalNumber.js'),DoWhileStatement:require('./DoWhileStatement.js'),ElementaryTypeName:require('./ElementaryTypeName.js'),EmitStatement:require('./EmitStatement.js'),EnumDefinition:require('./EnumDefinition.js'),EnumValue:require('./EnumValue.js'),EventDefinition:require('./EventDefinition.js'),ExpressionStatement:require('./ExpressionStatement.js'),ForStatement:require('./ForStatement.js'),FunctionCall:require('./FunctionCall.js'),FunctionDefinition:require('./FunctionDefinition.js'),FunctionTypeName:require('./FunctionTypeName.js'),HexLiteral:require('./HexLiteral.js'),HexNumber:require('./HexNumber.js'),Identifier:require('./Identifier.js'),IfStatement:require('./IfStatement.js'),ImportDirective:require('./ImportDirective.js'),IndexAccess:require('./IndexAccess.js'),IndexRangeAccess:require('./IndexRangeAccess.js'),InheritanceSpecifier:require('./InheritanceSpecifier.js'),InlineAssemblyStatement:require('./InlineAssemblyStatement.js'),LabelDefinition:require('./LabelDefinition.js'),Mapping:require('./Mapping.js'),MemberAccess:require('./MemberAccess.js'),ModifierDefinition:require('./ModifierDefinition.js'),ModifierInvocation:require('./ModifierInvocation.js'),NewExpression:require('./NewExpression.js'),NumberLiteral:require('./NumberLiteral.js'),PragmaDirective:require('./PragmaDirective.js'),ReturnStatement:require('./ReturnStatement.js'),SourceUnit:require('./SourceUnit.js'),StateVariableDeclaration:require('./StateVariableDeclaration.js'),StringLiteral:require('./StringLiteral.js'),StructDefinition:require('./StructDefinition.js'),ThrowStatement:require('./ThrowStatement.js'),TryStatement:require('./TryStatement.js'),TupleExpression:require('./TupleExpression.js'),TypeNameExpression:require('./TypeNameExpression.js'),UnaryOperation:require('./UnaryOperation.js'),UserDefinedTypeName:require('./UserDefinedTypeName.js'),UsingForDeclaration:require('./UsingForDeclaration.js'),VariableDeclaration:require('./VariableDeclaration.js'),VariableDeclarationStatement:require('./VariableDeclarationStatement.js'),WhileStatement:require('./WhileStatement.js')};"
1717
`;

scripts/generateIndexes.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,10 @@ const prettier = require('prettier');
33
const makeData = require('./makeData');
44

55
if (process.env.SCRIPT === 'true') {
6-
prettier.resolveConfig(`${__dirname}../.prettierrc`).then(options => {
6+
prettier.resolveConfig(`${__dirname}../.prettierrc`).then((options) => {
77
// eslint-disable-next-line no-param-reassign
88
options.parser = 'babel';
9-
['../src/nodes', '../src/binary-operator-printers'].forEach(dir => {
9+
['../src/nodes', '../src/binary-operator-printers'].forEach((dir) => {
1010
fs.writeFileSync(
1111
`${__dirname}/${dir}/index.js`,
1212
prettier.format(makeData(dir), options)

scripts/makeData.js

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,14 +2,15 @@ const dirToObject = require('dir-to-object');
22

33
function makeData(dir) {
44
const nodes = Object.keys(
5-
dirToObject(`${__dirname}/${dir}`, { canAdd: data => data.print })
5+
dirToObject(`${__dirname}/${dir}`, { canAdd: (data) => data.print })
66
).reduce((accumulator, current) => {
77
accumulator[current] = `require('./${current}.js')`;
88
return accumulator;
99
}, {});
1010

11-
const data = `/* This file was automatically generated on ${Date.now() /
12-
1000} */
11+
const data = `/* This file was automatically generated on ${
12+
Date.now() / 1000
13+
} */
1314
1415
/* eslint-disable global-require */
1516

src/binary-operator-printers/index.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* This file was automatically generated on 1581775642.955 */
1+
/* This file was automatically generated on 1588903580.368 */
22

33
/* eslint-disable global-require */
44

src/nodes/IndexRangeAccess.js

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
const {
2+
doc: {
3+
builders: { concat }
4+
}
5+
} = require('prettier/standalone');
6+
7+
const IndexRangeAccess = {
8+
print: ({ path, print }) =>
9+
concat([
10+
path.call(print, 'base'),
11+
'[',
12+
path.call(print, 'indexStart'),
13+
':',
14+
path.call(print, 'indexEnd'),
15+
']'
16+
])
17+
};
18+
19+
module.exports = IndexRangeAccess;

src/nodes/index.js

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
/* This file was automatically generated on 1581775642.911 */
1+
/* This file was automatically generated on 1588903580.303 */
22

33
/* eslint-disable global-require */
44

@@ -39,6 +39,7 @@ module.exports = {
3939
IfStatement: require('./IfStatement.js'),
4040
ImportDirective: require('./ImportDirective.js'),
4141
IndexAccess: require('./IndexAccess.js'),
42+
IndexRangeAccess: require('./IndexRangeAccess.js'),
4243
InheritanceSpecifier: require('./InheritanceSpecifier.js'),
4344
InlineAssemblyStatement: require('./InlineAssemblyStatement.js'),
4445
LabelDefinition: require('./LabelDefinition.js'),
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
pragma solidity ^0.6.4;
2+
3+
contract Demo {
4+
event Log(bytes value);
5+
6+
function log(bytes calldata value) external {
7+
emit Log(bytes(value[0:10]));
8+
}
9+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// Jest Snapshot v1, https://goo.gl/fbAQLP
2+
3+
exports[`IndexRangeAccess.sol 1`] = `
4+
pragma solidity ^0.6.4;
5+
6+
contract Demo {
7+
event Log(bytes value);
8+
9+
function log(bytes calldata value) external {
10+
emit Log(bytes(value[0:10]));
11+
}
12+
}
13+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
14+
pragma solidity ^0.6.4;
15+
16+
17+
contract Demo {
18+
event Log(bytes value);
19+
20+
function log(bytes calldata value) external {
21+
emit Log(bytes(value[0:10]));
22+
}
23+
}
24+
25+
`;
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
run_spec(__dirname);

0 commit comments

Comments
 (0)