예제 #1
0
        public void NewClass(ClassProvided detail)
        {
            if (!detail.Visibility.IsModuleProvidedAccessModifier()) {
                throw new IllegalStateException("Invalid visibility for contexts");
            }

            var key = detail.ClassName;
            var existing = Classes.Get(key);
            if (existing != null) {
                throw new IllegalStateException("Duplicate class-provided-by-application has been encountered for name '" + key + "'");
            }

            Classes[key] = detail;
        }
예제 #2
0
        protected override string Register(StatementCompileTimeServices services)
        {
            if (services.ClassProvidedCompileTimeResolver.ResolveClass(className) != null) {
                throw new ExprValidationException("Class '" + className + "' has already been declared");
            }

            var classProvided = new ClassProvided(classProvidedPrecompileResult.Assembly, className);
            var visibility = services.ModuleVisibilityRules.GetAccessModifierExpression(Base, className);
            classProvided.ModuleName = Base.ModuleName;
            classProvided.Visibility = visibility;
            classProvided.LoadClasses(services.ParentClassLoader);
            services.ClassProvidedCompileTimeRegistry.NewClass(classProvided);
            return className;
        }
 public void RegisterClass(string className, ClassProvided meta)
 {
     moduleClassProvideds.Put(className, meta);
     meta.LoadClasses(parentClassLoader);
 }