import { SymbolInformation , SymbolKind , Location } from 'vscode' ; export class SystemVerilogSymbol extends SymbolInformation { public type : string ; param name param type param containerName param location constructor ( name , type , containerName , location ) { super ( name , getSymbolKind ( type ) , containerName , location ) ; this . type = type ; } } export function getSymbolKind ( name ) { if ( name === undefined || name === '' ) { return SymbolKind . Variable ; } if ( name . indexOf ( '[' ) !== - 1 ) { return SymbolKind . Array ; } switch ( name ) { case 'parameter' : case 'localparam' : return SymbolKind . Constant ; case 'package' : case 'program' : case 'import' : return SymbolKind . Package ; case 'begin' : case 'string' : return SymbolKind . String ; case 'class' : return SymbolKind . Class ; case 'task' : return SymbolKind . Method ; case 'function' : return SymbolKind . Function ; case 'interface' : return SymbolKind . Interface ; case 'assert' : case 'event' : return SymbolKind . Event ; case 'struct' : return SymbolKind . Struct ; case 'typedef' : return SymbolKind . TypeParameter ; case 'genvar' : return SymbolKind . Operator ; case 'enum' : return SymbolKind . Enum ; case 'modport' : return SymbolKind . Null ; case 'define' : case 'property' : return SymbolKind . Property ; case 'wire' : case 'reg' : case 'bit' : case 'logic' : case 'int' : case 'integer' : case 'char' : case 'time' : case 'float' : return SymbolKind . Variable ; case 'module' : default : return SymbolKind . Field ; } }