@@ -3,6 +3,7 @@ import coerce from 'semver/functions/coerce.js';
33import satisfies from 'semver/functions/satisfies.js' ;
44import { NonterminalKind } from '@nomicfoundation/slang/kinds/index.js' ;
55import { getNodeMetadata , updateMetadata } from '../slang-utils/metadata.js' ;
6+ import { Identifier } from './Identifier.js' ;
67import { InheritanceSpecifier } from './InheritanceSpecifier.js' ;
78import { ContractMembers } from './ContractMembers.js' ;
89
@@ -22,7 +23,7 @@ export class ContractDefinition implements SlangNode {
2223
2324 abstractKeyword ?: string ;
2425
25- name : string ;
26+ name : Identifier ;
2627
2728 inheritance ?: InheritanceSpecifier ;
2829
@@ -37,8 +38,8 @@ export class ContractDefinition implements SlangNode {
3738 const { offsets } = metadata ;
3839
3940 this . abstractKeyword = ast . abstractKeyword ?. text ;
40- this . name = ast . name . text ;
41- let i = 0 ;
41+ this . name = new Identifier ( ast . name , offsets [ 0 ] ) ;
42+ let i = 1 ;
4243 if ( ast . inheritance ) {
4344 this . inheritance = new InheritanceSpecifier (
4445 ast . inheritance ,
@@ -65,7 +66,7 @@ export class ContractDefinition implements SlangNode {
6566 for ( const member of this . members . items ) {
6667 if (
6768 member . variant . kind === NonterminalKind . FunctionDefinition &&
68- member . variant . name . variant !== this . name
69+ member . variant . name . variant . value !== this . name . value
6970 ) {
7071 member . variant . cleanModifierInvocationArguments ( ) ;
7172 }
@@ -77,7 +78,8 @@ export class ContractDefinition implements SlangNode {
7778 return [
7879 group ( [
7980 this . abstractKeyword ? 'abstract ' : '' ,
80- `contract ${ this . name } ` ,
81+ 'contract ' ,
82+ path . call ( print , 'name' ) ,
8183 this . inheritance ? [ ' ' , path . call ( print , 'inheritance' ) ] : line ,
8284 '{'
8385 ] ) ,
0 commit comments