public ExpressionScriptProvided Resolve( string name, int numParameters) { var key = new NameAndParamNum(name, numParameters); // try self-originated protected types first ExpressionScriptProvided localExpr = _locals.Scripts.Get(key); if (localExpr != null) { return localExpr; } try { var expression = _path.GetAnyModuleExpectSingle( new NameAndParamNum(name, numParameters), _moduleUses); if (expression != null) { if (!_isFireAndForget && !NameAccessModifierExtensions.Visible( expression.First.Visibility, expression.First.ModuleName, _moduleName)) { return null; } _moduleDependencies.AddPathScript(key, expression.Second); return expression.First; } } catch (PathException e) { throw CompileTimeResolverUtil.MakePathAmbiguous(PathRegistryObjectType.SCRIPT, name, e); } return null; }
public void NewScript(ExpressionScriptProvided detail) { if (!detail.Visibility.IsModuleProvidedAccessModifier()) { throw new IllegalStateException("Invalid visibility for contexts"); } var key = new NameAndParamNum(detail.Name, detail.ParameterNames.Length); var existing = Scripts.Get(key); if (existing != null) { throw new IllegalStateException("Duplicate script has been encountered for name '" + key + "'"); } Scripts.Put(key, detail); }
public void AddPathScript( NameAndParamNum key, string moduleName) { pathScripts.Add(new NameParamNumAndModule(key.Name, key.ParamNum, moduleName)); }