@@ -4,13 +4,15 @@ import { ContextManager } from '../context/ContextManager';
44import { TopLevelSection , IntrinsicFunction } from '../context/ContextType' ;
55import { ContextWithRelatedEntities } from '../context/ContextWithRelatedEntities' ;
66import { EntityType } from '../context/semantic/SemanticTypes' ;
7+ import { FeatureFlag } from '../featureFlag/FeatureFlagI' ;
78import { SchemaRetriever } from '../schema/SchemaRetriever' ;
89import { ISettingsSubscriber , SettingsConfigurable , SettingsSubscription } from '../settings/ISettingsSubscriber' ;
910import { DefaultSettings , HoverSettings } from '../settings/Settings' ;
1011import { LoggerFactory } from '../telemetry/LoggerFactory' ;
1112import { Track } from '../telemetry/TelemetryDecorator' ;
1213import { Closeable } from '../utils/Closeable' ;
1314import { ConditionHoverProvider } from './ConditionHoverProvider' ;
15+ import { ConstantHoverProvider } from './ConstantHoverProvider' ;
1416import { HoverProvider } from './HoverProvider' ;
1517import { IntrinsicFunctionArgumentHoverProvider } from './IntrinsicFunctionArgumentHoverProvider' ;
1618import { IntrinsicFunctionHoverProvider } from './IntrinsicFunctionHoverProvider' ;
@@ -31,6 +33,7 @@ export class HoverRouter implements SettingsConfigurable, Closeable {
3133 constructor (
3234 private readonly contextManager : ContextManager ,
3335 schemaRetriever : SchemaRetriever ,
36+ private readonly constantsFeatureFlag : FeatureFlag ,
3437 ) {
3538 this . hoverProviderMap = this . createHoverProviders ( schemaRetriever ) ;
3639 }
@@ -102,6 +105,11 @@ export class HoverRouter implements SettingsConfigurable, Closeable {
102105 if ( doc ) {
103106 return doc ;
104107 }
108+ } else if ( context . section === TopLevelSection . Constants && this . constantsFeatureFlag . isEnabled ( ) ) {
109+ const doc = this . hoverProviderMap . get ( HoverType . Constant ) ?. getInformation ( context ) ;
110+ if ( doc ) {
111+ return doc ;
112+ }
105113 } else if ( context . section === TopLevelSection . Outputs && this . isOutputAttribute ( context ) ) {
106114 const doc = this . hoverProviderMap . get ( HoverType . OutputSectionField ) ?. getInformation ( context ) ;
107115 if ( doc ) {
@@ -128,14 +136,15 @@ export class HoverRouter implements SettingsConfigurable, Closeable {
128136
129137 private createHoverProviders ( schemaRetriever : SchemaRetriever ) : Map < HoverType , HoverProvider > {
130138 const hoverProviderMap = new Map < HoverType , HoverProvider > ( ) ;
131- hoverProviderMap . set ( HoverType . TopLevelSection , new TemplateSectionHoverProvider ( ) ) ;
139+ hoverProviderMap . set ( HoverType . TopLevelSection , new TemplateSectionHoverProvider ( this . constantsFeatureFlag ) ) ;
132140 hoverProviderMap . set ( HoverType . ResourceSection , new ResourceSectionHoverProvider ( schemaRetriever ) ) ;
133141 hoverProviderMap . set ( HoverType . Parameter , new ParameterHoverProvider ( ) ) ;
134142 hoverProviderMap . set ( HoverType . ParameterAttribute , new ParameterAttributeHoverProvider ( ) ) ;
135143 hoverProviderMap . set ( HoverType . OutputSectionField , new OutputSectionFieldHoverProvider ( ) ) ;
136144 hoverProviderMap . set ( HoverType . PseudoParameter , new PseudoParameterHoverProvider ( ) ) ;
137145 hoverProviderMap . set ( HoverType . Condition , new ConditionHoverProvider ( ) ) ;
138146 hoverProviderMap . set ( HoverType . Mapping , new MappingHoverProvider ( ) ) ;
147+ hoverProviderMap . set ( HoverType . Constant , new ConstantHoverProvider ( ) ) ;
139148 hoverProviderMap . set ( HoverType . IntrinsicFunction , new IntrinsicFunctionHoverProvider ( ) ) ;
140149 hoverProviderMap . set (
141150 HoverType . IntrinsicFunctionArgument ,
@@ -184,6 +193,12 @@ export class HoverRouter implements SettingsConfigurable, Closeable {
184193 case EntityType . Resource : {
185194 return this . hoverProviderMap . get ( HoverType . ResourceSection ) ?. getInformation ( context ) ;
186195 }
196+ case EntityType . Constant : {
197+ if ( this . constantsFeatureFlag . isEnabled ( ) ) {
198+ return this . hoverProviderMap . get ( HoverType . Constant ) ?. getInformation ( context ) ;
199+ }
200+ return undefined ;
201+ }
187202 }
188203
189204 return undefined ;
@@ -201,4 +216,5 @@ enum HoverType {
201216 PseudoParameter ,
202217 Condition ,
203218 Mapping ,
219+ Constant ,
204220}
0 commit comments